C# ConfigurationManager.GetConfigurationAsync无法在TestServer中检索标识配置

C# ConfigurationManager.GetConfigurationAsync无法在TestServer中检索标识配置,c#,asp.net-core-identity,asp.net-core-2.2,asp.net-core-testhost,C#,Asp.net Core Identity,Asp.net Core 2.2,Asp.net Core Testhost,我使用的是Microsoft.AspNetCore.TestHost2.2.0版和Microsoft.NET.Test.Sdk15.9.0版。我正在为OAuth2提供者使用IdentityServer4进行Jwt承载身份验证。当与真正的web服务器一起部署时,该设置运行良好。但是,使用TestServer进行集成测试时会出现此问题 我已经注册了HttpMessageHandler如下: private void InitializeServices<TStartup>(IServic

我使用的是
Microsoft.AspNetCore.TestHost
2.2.0版和
Microsoft.NET.Test.Sdk
15.9.0版。我正在为OAuth2提供者使用IdentityServer4进行Jwt承载身份验证。当与真正的web服务器一起部署时,该设置运行良好。但是,使用
TestServer
进行集成测试时会出现此问题

我已经注册了
HttpMessageHandler
如下:

private void InitializeServices<TStartup>(IServiceCollection services)
{
      var startupAssembly = typeof(TStartup).GetTypeInfo().Assembly;

      var applicationPartManager = new ApplicationPartManager();
      applicationPartManager.ApplicationParts.Add(new AssemblyPart(startupAssembly));
      applicationPartManager.FeatureProviders.Add(new ControllerFeatureProvider());
      applicationPartManager.FeatureProviders.Add(new ViewComponentFeatureProvider());

      services.AddSingleton(applicationPartManager);

      services.PostConfigure<IdentityServerAuthenticationOptions>(options =>
                                                                        {
                                                                            options.IntrospectionDiscoveryHandler = this.server.CreateHandler();
                                                                            options.IntrospectionBackChannelHandler = this.server.CreateHandler();
                                                                            options.JwtBackChannelHandler = this.server.CreateHandler();
                                                                        });
}

检查代理设置。
Result StackTrace:  
at Microsoft.IdentityModel.Protocols.ConfigurationManager`1.GetConfigurationAsync(CancellationToken cancel)
   at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()
   at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()
   at Microsoft.AspNetCore.Authentication.AuthenticationHandler`1.AuthenticateAsync()
   at Microsoft.AspNetCore.Authentication.AuthenticationService.AuthenticateAsync(HttpContext context, String scheme)
   at IdentityServer4.AccessTokenValidation.IdentityServerAuthenticationHandler.HandleAuthenticateAsync() in C:\local\identity\server4\AccessTokenValidation\src\IdentityServer4.AccessTokenValidation\IdentityServerAuthenticationHandler.cs:line 61
   at Microsoft.AspNetCore.Authentication.AuthenticationHandler`1.AuthenticateAsync()
   at Microsoft.AspNetCore.Authentication.AuthenticationService.AuthenticateAsync(HttpContext context, String scheme)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Cors.Infrastructure.CorsMiddleware.Invoke(HttpContext context)
   at IdentityServer4.Hosting.BaseUrlMiddleware.Invoke(HttpContext context) in C:\local\identity\server4\IdentityServer4\src\IdentityServer4\Hosting\BaseUrlMiddleware.cs:line 36
   at Microsoft.AspNetCore.Cors.Infrastructure.CorsMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.TestHost.HttpContextBuilder.<>c__DisplayClass10_0.<<SendAsync>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.TestHost.ClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at xxx.ClientControllerTest.CreateNewClientAsync() in xxx.ClientControllerTest.cs:line 167
   at xxx.ClientControllerTest.CreateNewClientTest() in xxx\ControllerTests\ClientControllerTest.cs:line 47
--- End of stack trace from previous location where exception was thrown ---
----- Inner Stack Trace -----
   at Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(String address, CancellationToken cancel)
   at Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfigurationRetriever.GetAsync(String address, IDocumentRetriever retriever, CancellationToken cancel)
   at Microsoft.IdentityModel.Protocols.ConfigurationManager`1.GetConfigurationAsync(CancellationToken cancel)
----- Inner Stack Trace -----
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   at System.Threading.Tasks.ValueTask`1.get_Result()
   at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Threading.Tasks.ValueTask`1.get_Result()
   at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask`1 creationTask)
   at System.Threading.Tasks.ValueTask`1.get_Result()
   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(String address, CancellationToken cancel)
----- Inner Stack Trace -----
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
Result Message: 
System.InvalidOperationException : IDX20803: Unable to obtain configuration from: '[PII is hidden by default. Set the 'ShowPII' flag in IdentityModelEventSource.cs to true to reveal it.]'.
---- System.IO.IOException : IDX20804: Unable to retrieve document from: '[PII is hidden by default. Set the 'ShowPII' flag in IdentityModelEventSource.cs to true to reveal it.]'.
-------- System.Net.Http.HttpRequestException : No connection could be made because the target machine actively refused it
------------ System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it