Csharp/C#教程:HttpContext在global.asax.cs中不起作用分享


HttpContext在global.asax.cs中不起作用

我在global.asax.cs中有这个代码

protected void Application_Start(object sender, EventArgs e) { string logFile = HttpContext.Current.Request.PhysicalApplicationPath + "log4net.config"; } 

它在.NET 4.0中运行良好,但在.NET 4.5中使用时会引发以下exception。

在此上下文中不提供请求

错误似乎很清楚 – Request对象在该事件中不可用。

尝试

 HttpRuntime.AppDomainAppPath 

要么

 Server.MapPath(".") 

代替。

答案很简单。 首先,这与.NET版本无关 – 而是与IIS版本和ASP.NET模式有关。 错误消息几乎说明了一切 – 你不能再在该位置使用HttpContext(事实上,它还不存在)。

这主要与经典模式和集成模式之间发生的变化有关(其中ASP.NET不再是ISAPI DLL,而是在不同级别上集成到IIS中)。 如果我没记错的话,HttpContext现在只在请求本身的持续时间内存在,从BeginRequest开始,以EndRequest结束,或者某些东西。

如果适用,您可以将应用程序文件夹切换到IIS中的经典应用程序池,但我建议不要这样做,因为集成模式非常酷。 仅对您无法升级的旧应用程序使用Classic。

此外,您不应使用PhysicalApplicationPath。 这就是Server.MapPath的用途,或者是Application_start, HostingEnvironment.MapPath

所以你要用

 string logFile = HostingEnvironment.MapPath("~/log4net.config"); 

对于log4net,您还可以使用常规方法设置配置位置,例如:

[assembly:log4net.Config.XmlConfigurator(ConfigFile =“MyStandardLog4Net.config”,Watch = true)]

上述就是C#学习教程:HttpContext在global.asax.cs中不起作用分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/959071.html

(0)
上一篇 2021年11月23日
下一篇 2021年11月23日

精彩推荐