ASP.NET会话状态在异常后丢失
我通常避免进程内会话状态,直到这个最近的项目.我认为我遇到一个问题,即在发生未处理的异常后状态丢失.
这本身就很奇怪,因为请求上下文中的异常不会影响工作进程.它可能是后台线程或回调或其他东西的例外,但这是一个简单的网站,没有任何花哨的东西. 会话ID保持不变,并且后续请求不会调用Session_Start(因此WP未回收). 我已经启用了很多日志记录,并且可以看到我从数据层获得异常,它在HttpUnhandleException内部是一个HttpException,然后当我立即浏览到主页时,请求会记录关于缺失的警告州. 更差.这不会发生在我的开发箱(IIS Express)上,仅在QA中. 编辑: 这是一大块日志: 2013-06-12 13:44:29,975 [23] FATAL MvcApplication 100.100.100.100 pxtgn GET An unhandled exception occurred in the web application. The full exception will be unrolled below. 2013-06-12 13:44:30,897 [23] FATAL MvcApplication 100.100.100.100 pxtgn GET Exception.Type: HttpUnhandledException Exception.Source: System.Web Exception.Message: Exception of type 'System.Web.HttpUnhandledException' was thrown. Exception.StackTrace: at System.Web.UI.Page.HandleError(Exception e) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint) at System.Web.HttpContext.InvokeCancellableCallback(WaitCallback callback,Object state) at System.Web.UI.Page.LegacyAsyncPageBeginProcessRequest(HttpContext context,AsyncCallback callback,Object extraData) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously) Exception.Type: HttpException Exception.Source: CompanyNameProductName.MvcCoreApp Exception.Message: An error was reported by the data layer: 0Image not found1-10.1007_978-1-4471-4294-2_21-16 Exception.StackTrace: at CompanyName.CompanyNameProductName.imagedetail.Page_Load(Object sender,EventArgs e) in c:DATAGitProductNameCompanyNameProductNameMvcimagedetail.aspx.cs:line 55 at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint) 2013-06-12 13:45:07,913 [25] DEBUG StandardPage 100.100.100.100 pxtgn GET Initializing page 'default_aspx' for GET with query string: 2013-06-12 13:45:07,913 [25] ERROR StandardPage 100.100.100.100 pxtgn GET No User instance in session state. Check the log for signs that the session was started properly since a User object should aways exist in session state,setup via session start events in ASP.NET. 最后一行显示缺少的状态条件. pxtgn是会话ID中的前5个字符.我点击了一个页面,我知道数据层将关于不存在的图像ID.然后我点击的任何页面将导致我的检查记录缺失状态的问题.检查和状态引用位于母版页的代码中,因此我可以点击任何页面来查看问题.这也意味着自定义错误页面不起作用 – 这就是我找到错误的方式. 我现在在检查后添加了一个Session.Abandon()并用500回应让我离开监狱,但这是一个非常奇怪的问题.我是代码库的新手,我想我已经在所有地方检查了被清除的会话或被覆盖的状态. 解决方法
1线程被破坏
2异步环境 使用httpcontext作为参数不是system.web.**.httpcontext (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET 根据汉字获取汉字拼音的首字母(含多音字)
- asp.net – 更改Html.DisplayFor布尔复选框MVC
- asp.net-mvc-3 – MVC 3子域路由
- asp.net – 如何在Azure网站上禁用SSL v 3.0
- asp.net-mvc – 为什么ValidateInput(False)不工作?
- asp.net-mvc-3 – 实体框架插件架构推荐
- asp.net – 你能使用基于属性的WebApi 2与WebForms的路由吗
- asp.net – 如何使用foreach循环清除所有文本框?
- asp.net – 如何在响应流中将字符串插入到我想要的任何位置
- 只需发布已修改的控制器,模型和ASP.NET MVC项目的某些部分