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 应用程序。
谢谢
我发现了类似的东西。我的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 中时,这不是必需的。