OWIN在IIS 7中作为Web应用程序托管(OWIN Startup未在虚拟目录中调用)

时间:2014-12-16 04:30:46

标签: c# asp.net-mvc-4 iis owin

我在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应用程序。

由于

1 个答案:

答案 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中作为根网站托管时,不需要这样做。