[英]IdentityServer4 Testserver could not found
我正在編寫測試以使用 Microsoft.AspNetCore.TestHost 從identity server4
獲取令牌
var hostBuilder = new WebHostBuilder()
.ConfigureServices(services =>
{
services.AddIdentityServer()
.AddTemporarySigningCredential()
.AddInMemoryIdentityResources(Config.GetIdentityResources())
.AddInMemoryApiResources(Config.GetApiResources())
.AddInMemoryClients(Config.GetClients())
.AddTestUsers(Config.GetUsers())
;
})
.Configure(app =>
{
app.UseIdentityServer();
});
var server = new TestServer(hostBuilder);
var client = server.CreateClient();
client.BaseAddress = new Uri("http://localhost:5000");
var disco = await DiscoveryClient.GetAsync("http://localhost:5000");
然后disco.Error 出現以下錯誤
連接到http://localhost:5001/.well-known/openid-configuration 時出錯:發送請求時出錯。
我錯過了什么?
發現客戶端顯然正在對該實際地址進行外部調用。 您希望它調用恰好“活動”InMemory 的測試服務器。
在此處查看用於測試發現文檔的 IdentityServer4 的這些測試。
要回答您的問題,但您需要使用DiscoveryClient
的重載方法之一,該方法接受一個處理程序,該處理程序將對您的 InMemory 測試服務器進行正確的“調用”。 下面是如何做到這一點的示例。
var server = new TestServer(hostBuilder);
var handler = server.CreateHandler();
var discoveryClient = new DiscoveryClient("http://localhost:5000", handler);
var discoveryDocument = await discoveryClient.GetAsync();
如果您要進行一些這樣的自己的測試,我也強烈建議您查看 IdentityServer4 集成測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.