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
相关产品推荐
相关产品推荐

