ASP.Net MVC 3应用程序在应用程序池回收时随机失败
我使用Classic .NET AppPool在IIS的默认网站上运行
Windows 2008 R2服务器和ASP.Net 2.0 Web应用程序.在下面我有一个使用ASP.NET v4.0集成管道AppPool运行MVC 3的虚拟应用程序.
应用程序池自动回收后,MVC虚拟应用程序经常出现故障.修复是手动回收ASP.NET 4.0 AppPool.我只需要回收一次,它总能解决问题. 我收到的应用程序错误似乎是程序集未正确加载时出现的错误.它们由NullReferenceException和Object引用组成,未将其设置为控制器和视图模型的对象实例. 问题是我无法按需重现这个,以便正确调试问题.我原以为应用程序池回收的顺序可能是一个问题,因此我将Classic池设置为每晚凌晨1点重新启动,而集成池将在凌晨1:15重新启动.不幸的是,这没有帮助. 关于assemblies being loaded on demand的这个答案很有意思,但是我不确定为什么错误很少发生,而且看似随意. 有没有人知道我将如何能够不断重现问题和/或潜在的解决方案?谢谢. 更新以包含示例堆栈跟踪: Exception information: Exception type: NullReferenceException Exception message: Object reference not set to an instance of an object. at Bookstore.Controllers.BooksController.<>c__DisplayClass78.<Details>b__76(Grade g) at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source,Func`2 predicate) at Bookstore.Controllers.BooksController.Details(String booktitle) at lambda_method(Closure,ControllerBase,Object[] ) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary`2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor actionDescriptor,IDictionary`2 parameters) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__DisplayClass2a.<BeginInvokeAction>b__20() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) at System.Web.Mvc.Controller.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) at System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.<BeginProcessRequest>b__4(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously) 解决方法
在审查了多个堆栈跟踪之后,罪魁祸首似乎总是存在于Entity Framework中.
This question听起来与我们发现的非常相似.我们有一个类似的理论:ASP.Net加载程序集的顺序可能存在竞争条件,导致实体框架有时“破坏”.我们实施了答案as mentioned,到目前为止一直在努力.令人沮丧的是,我们永远无法始终如一地重现问题,因此只有时间才能证明修复是否有效. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何添加验证到我的POCO(模板)类
- asp.net – 具有w3wp应用程序池IIS 7的高内存使用率
- asp.net-mvc-3 – 具有角色的AuthorizeAttribute但不对角色
- entity-framework – 如何告诉UserManager.FindByNameAsync
- asp.net-core-mvc – 使用asp.net核心的google身份验证器
- 在ASP.NET中下载文件的实现代码
- asp.net-mvc – 我们可以从现有数据库的选定表中Scaffold D
- razor – 如何定义在asp.net核心中返回html的函数
- asp.net – User.Identity.Name是否为空?
- asp.net-mvc – 将存储库注入ASP.NET控制器的最佳方法是什么