我刚刚开始进行IS 3项目的研究。我们目前拥有的架构是
1)在一个WCF服务项目中使用WCF REST和WCF Soap 2)Owin中间层是一个类库,是一个单独的项目 3)Identity Server 3是一个与以前的2相同解决方案的Web项目。
我刚刚将一个全新的Web API项目(第1版)添加到相同的解决方案中,并且我尝试使用相同的代码,以便可以与WCF项目共享调用。
我已经实现了称为HttpHeaderInformationForWebAPI的单独的类,并且所有这些都将ApiControler.Request对象一直发送到此Owin层。
如果我尝试请求现有的WCF Rest方法,则代码可以正常工作,并且可以很好地验证令牌。
但是当我尝试通过新的Web Api验证令牌时,它会挂在这一行。
private async Task<OpenIdConnectConfiguration> RetrieveConfiguration()
{
ConfigurationManager<OpenIdConnectConfiguration> configurationManager = new ConfigurationManager<OpenIdConnectConfiguration>(IDPBaseAddress + "/.well-known/openid-configuration");
configurationManager.AutomaticRefreshInterval = new TimeSpan(1, 0, 0, 0);
return await configurationManager.GetConfigurationAsync().ConfigureAwait(false);
}
它挂在返回等待行,就挂在那里。如果我查看IdentitySerever日志,它会显示“正在启动发现”并挂在那里。我是否缺少任何配置条目?
据我所知,中间件正在处理所有内容,除了基地址和与IS相关的其他端点URL外,我不需要任何web.config值。
可以让我知道我在想什么吗?大多数示例都位于GitHub上的同一项目中。这是一个三层设置,如果我的API项目中的Global.asax中需要任何内容,我真的很费劲。如果我查看现有的WCF服务项目,则没有配置任何与OWIN或IS相关的内容,也没有任何startup.cs且其工作正常。但是,即使我可以将该配置文件加载到浏览器中,从Web api调用时,该行也会挂起。
谢谢!