我在IIS 7.5中部署了一个Owin中间件身份验证项目作为Web应用程序 但问题是Startup.cs没有被调用。
[assembly: OwinStartup(typeof(Authorization.Startup))]
namespace Authorization
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
//Logger.Write(string.Format("Authorizations->frist Configuration "), LoggingCategoryNames.PRESENTATION_LAYER_LOGGING_CATEGORY);
ConfigureAuth(app);
}
}
}
此代码未执行。 当我们将其部署为根级网站时,一切正常。
那么我们哪里出错了,可以采取哪些措施让它发挥作用。 我们无法将我们的身份验证项目部署为单独的网站,它只能是一个Web应用程序。
由于
答案 0 :(得分:3)
我发现了类似的东西。我的Configuration
方法正在运行,但是作为子Web应用程序托管时,身份验证中间件(本例中为OpenIdConnect)似乎没有在Owin管道中执行。它作为根网站托管时工作正常。
在深入研究管道本身之前,我尝试了一些在使用其他令牌服务(ADFS for one)时遇到的问题。果然它确实是其中之一。
旧的斜杠问题。
客户端应用程序中的我的OpenIdConnect配置在
之前看起来像这样app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
Authority = "https://idserver/identity",
ClientId = "Client",
RedirectUri = "https://clients/mvcclientapp"
...
});
客户端不会处理传入的令牌。中间件似乎根本没有在管道中执行。
我在RedirectUrl的末尾添加了一个额外的“/”,它开始工作。
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
Authority = "https://idserver/identity",
ClientId = "Client",
RedirectUri = "https://clients/mvcclientapp/"
...
});
当在IIS中作为根网站托管时,不需要这样做。