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

本文关键字:OWIN 启动 虚拟 调用 IIS 应用程序 Web | 更新日期: 2023-09-27 18:34:27

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

谢谢

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

我发现了类似的东西。我的Configuration方法正在运行,但身份验证中间件(在本例中为 OpenIdConnect)在作为子 Web 应用程序托管时似乎没有在 Owin 管道中执行。当作为根网站托管时,它工作正常。

在深入研究调试管道本身之前,我尝试了几件事,我看到这些事情在使用其他令牌服务(ADFS 就是其中之一)时会导致问题。果然,原来是其中之一。

旧的尾部斜杠问题。

我在客户端应用程序中的OpenIdConnect配置之前看起来像这样

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
    Authority = "https://idserver/identity",
    ClientId = "Client",
    RedirectUri = "https://clients/mvcclientapp"
    ...
});

客户端不会处理传入的令牌。中间件似乎根本没有在管道中执行。

我在重定向URL的末尾添加了一个额外的"/",它开始工作了。

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
    Authority = "https://idserver/identity",
    ClientId = "Client",
    RedirectUri = "https://clients/mvcclientapp/"
    ...
});

当作为根网站托管在 IIS 中时,这不是必需的。