当前位置:  开发笔记 > 运维 > 正文

找不到IdentityServer4 Testserver

如何解决《找不到IdentityServer4Testserver》经验,为你挑选了1个好方法。

我正在编写一个测试,以使用Microsoft.AspNetCore.TestHost从身份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时出错:发送请求时出错.

我错过了什么?



1> Lutando..:

发现客户端显然正在对该实际地址进行外部调用.您希望它调用碰巧"活"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集成测试,如果您要进行一些自己的测试.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有