You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Web Form项目IIS中Owin Startup无法正常启动求助

OWIN Startup在IIS中无法正常工作问题

已尝试所有可行方式调用OWIN Startup,但在IIS中仍无法正常工作。

环境配置

IIS应用池已设置为集成管道模式,CLR版本为v4.0。

Web.config配置尝试

在<web.config>中添加了以下配置项,但未被正确识别:

<add key="ida:AppScopes" value="User.Read" />
<add key="owin:AutomaticAppStartup" value="true" />
<add key="owin:AppStartup" value="HR_Web.StartupTest"/>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />

Global.asax手动调用尝试

随后尝试在<global.asax>的<Application_Start>方法中手动调用Startup类:

using (Microsoft.Owin.Hosting.WebApp.Start<StartupTest>("http://localhost:9000"))
{
    ErrorHandler.Singleton().logInforDetail("Startup execution in global started", LogTypes.FileAppenderRequestLog);
 }

虽然Startup方法被成功调用,但执行以下代码获取上下文时抛出异常:

Request.GetOwinContext().Authentication.Challenge(
    new AuthenticationProperties { RedirectUri = "/" },
    OpenIdConnectAuthenticationDefaults.AuthenticationType); 

异常信息

System.InvalidOperationException: 'No owin.Environment item was found in the context.'

完整代码片段

Global.asax代码

protected void Application_Start(object sender, EventArgs e)
{
    try
    {
        log4net.Config.XmlConfigurator.Configure();
        HR_BL.Assessment.AssesmentThread.AssementCalculationThread.Initialize();
        RouteTable.Routes.MapHttpRoute(
             name: "DefaultApi",
             routeTemplate: "api/{controller}/{id}",
             defaults: new { id = System.Web.Http.RouteParameter.Optional }
         );

        using (Microsoft.Owin.Hosting.WebApp.Start<StartupTest>("http://localhost:9000"))
        {
            ErrorHandler.Singleton().logInforDetail("Startup execution in global started", LogTypes.FileAppenderRequestLog);
        }
    }
    catch (Exception ex)
    {
        ErrorHandler.Singleton().logErrorDetail(ex);
    }
}

Web.config完整配置

<add key="ida:AppID" value="XXXX-XXXX-XXXX-XXX-c0d08bc01bc1" />
<add key="ida:AppPassword" value="XXXXXX~XXXXXXXXXX_XXXXXX" />
<add key="ida:RedirectUri" value="https://hr-esc-ut.abc/LoginMicro.aspx" />
<add key="ida:AppScopes" value="User.Read" />
<add key="owin:AutomaticAppStartup" value="true" />
<add key="owin:AppStartup" value="HR_Web.StartupTest"/>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />

Startup类代码

[assembly: OwinStartup(typeof(HR_Web.StartupTest))]

namespace HR_Web
{ 
public class StartupTest
{
       public void Configuration(IAppBuilder app)
    {
        ErrorHandler.Singleton().logInforDetail("Startup execution StartupTest Configuration started", LogTypes.FileAppenderRequestLog);
        ConfigureAuth(app);
    }
}
}

其他考虑

曾考虑使用MSAL.js,但该库似乎依赖Node.js,而当前项目使用knockout.js,不确定引入Node.js是否合适。


内容的提问来源于stack exchange,提问作者DevT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 01:55:57