有没有办法为在调试模式下运行的网页设置一些默认设置?
例如,我想在调试模式下设置默认的会话用户ID,但是在Application_Start()中尝试此操作会导致错误:
protected void Application_Start()
{
#if DEBUG
Session["User"] = "1"
#endif
}
我可以选择将其放置在控制器中,但这需要大量代码重复。
引发错误的原因是因为Session对象与请求相关联。Application_Start
活动中没有任何请求。您可以将此逻辑移到Application_AcquireRequestState
事件处理程序,它将正常工作。
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
if (HttpContext.Current.IsDebuggingEnabled)
{
HttpContext.Current.Session["user"] = "1";
}
else
{
HttpContext.Current.Session["user"] = "0";
}
}
编辑
经过进一步研究,我弄错了。在.NET管道中,上面的事件处理程序是您可以访问会话对象的第一位。尚未从服务器中检索到它,Application_BeginRequest
这就是为什么要获得NullReferenceException
静止图像的原因。我在MVC 5中测试了上面的代码,没有任何问题。
此外,不必依赖编译器常量,您可以轻松判断自己是否处于调试模式,或者不使用的上述语法HttpContext.Current.IsDebuggingEnabled
。这基本上是一个包装器,用于检查compilation
标记上的web.config属性并查看是否debug="true"
注意-您必须使用HttpContext.Current.Session的完全限定名称(如上所述),因为全局事件处理程序没有对当前HttpContext的直接继承。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句