C# Azure函数-您能否在函数作用域之前访问IServiceProvider?

C# Azure函数-您能否在函数作用域之前访问IServiceProvider?,c#,azure-functions,C#,Azure Functions,您好,我有一个用例,希望在azure函数项目中调用函数之前访问IServiceProvider 尝试: 使用IWebJobsStartup cs文件,我能够在调用函数之前访问serviceCollection。最后,我尝试了这段代码 var serviceProvider = services.BuildServiceProvider(); serviceProvider.GetRequiredService<IAccountAPITests>(); var servicePr

您好,我有一个用例,希望在azure函数项目中调用函数之前访问IServiceProvider

尝试:

  • 使用IWebJobsStartup cs文件,我能够在调用函数之前访问serviceCollection。最后,我尝试了这段代码

     var serviceProvider = services.BuildServiceProvider();
     serviceProvider.GetRequiredService<IAccountAPITests>();
    
    var serviceProvider=services.BuildServiceProvider();
    serviceProvider.GetRequiredService();
    
  • 在试图激活“Microsoft.Azure.WebJobs.Script.HostFileLoggingStatusManager”时,出现错误消息“System.InvalidOperationException:'无法解析类型为“Microsoft.Azure.WebJobs.Script.Diagnostics.HostFileLoggerProvider”的服务。”

    到目前为止,我唯一可以访问IServiceCollection的时间是在我的函数中

     public TestAutomationFunction
        (
            IServiceProvider rootServiceProvider
        )
        {
    
            _integrationTestService = rootServiceProvider.GetRequiredService<IIntegrationTestService>();
        }
    
    公共测试自动化功能
    (
    IServiceProviderRootServiceProvider
    )
    {
    _integrationTestService=rootServiceProvider.GetRequiredService();
    }
    
    这很好,但问题是函数的作用域是有限的,因此在其中解决的任何问题都将绑定到其相同的作用域

    我尽了最大的努力画了一个viso,说明为什么我在ASP.net中没有这个问题,为什么我在函数中有这个问题

    我希望在调用函数之前访问IServiceProvider,以确保我的服务不在同一范围内。或者在调用函数后,在spereate作用域中使用解析我的服务

    当然,我可以将包X singleton更改为作用域,但我的用例并不像它在堆栈中那么简单,我必须一直这样做


    这并不能完全回答我的问题,但它使我的问题成为一个沉默点

    “不要从单一服务解析作用域服务。这可能会导致服务在处理后续请求时的状态不正确。可以从作用域服务或临时服务解析单一服务。”

    我将重新工作我的堆栈,不允许这种情况发生,之后我就不必担心这个问题