在 ASP.NET 5 的 beta 8 中,我可以访问 CallContextServiceLocator。 RC1 中不再提供此功能。
如何替换下面代码中对 CallContextServiceLocator 的调用。我正在使用该代码创建服务的测试实例。
private static TestServer CreateTestServer(HttpMessageHandler backchannelHttpHandler = null)
{
HostingEnvironment hostingEnvironment = new HostingEnvironment { EnvironmentName = "Testing", };
Microsoft.Extensions.PlatformAbstractions.IApplicationEnvironment appEnv =
CallContextServiceLocator.Locator.ServiceProvider.GetRequiredService<Microsoft.Extensions.PlatformAbstractions.IApplicationEnvironment>();
Startup serviceStartup = new Startup(hostingEnvironment, appEnv, backchannelHttpHandler);
Action<IApplicationBuilder> configureApp = app => serviceStartup.Configure(app, appEnv, new LoggerFactory());
Action<IServiceCollection> configureServices = svc => serviceStartup.ConfigureServices(svc);
WebApplicationBuilder webAppBuilder = new WebApplicationBuilder();
webAppBuilder.Configure(configureApp);
webAppBuilder.ConfigureServices(configureServices);
return new TestServer(webAppBuilder);
}
最佳答案
本身没有替代品,它已经被埋葬了,RIP:)。您可以使用平台服务来获取特定组件。此外,托管 API 也经过了改进,不再那么糟糕,因此默认情况下不需要向其中传递任何内容。
关于asp.net-core - 什么取代了 CallContextServiceLocator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34939618/