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