c# - MVC 中的奇怪异常

标签 c# asp.net-mvc asp.net-mvc-3

我的 MVC 3 应用程序很少有以下异常。它仅处于 Release模式,当它启动时,只有重新启动 IIS 应用程序池才有帮助。有谁能给我提示是什么导致了这个错误?

异常(exception)情况:

System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Web.Mvc.FilterProviderCollection.<RemoveDuplicates>d__b.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.<ReverseIterator>d__a0`1.MoveNext()
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at System.Web.Mvc.FilterInfo..ctor(IEnumerable`1 filters)
   at System.Web.Mvc.ControllerActionInvoker.GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor)
   at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
   at System.Web.Mvc.Controller.ExecuteCore()
   at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
   at System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.<BeginProcessRequest>b__5()
   at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0()
   at System.Web.Mvc.MvcHandler.<>c__DisplayClasse.<EndProcessRequest>b__d()
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

最佳答案

看起来您在没有锁定的情况下修改了 GlobalFilters 集合。当您从 IHttpModule.Init 访问此集合时可能会发生这种情况,它会为运行时创建的每个 HttpApplication 调用。曾经遇到过这个问题。

使用 WebActivator 或简单的 Global_asax App_Start 来初始化这种全局集合。

关于c# - MVC 中的奇怪异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18830716/

相关文章:

c# - C# 中的实现差异

c# - ArgumentNullException 突然未处理

javascript - 如何正确从 JSON.stringify 中提取数据

javascript - JavaScript 到 MVC : Controller Variable Passing via Actionlink

c# - MVC,Linq - 排序问题

c# - 读取 XML 时出错

c# - 如何让 C# 中的进程(而不是线程)同步文件系统访问

c# - 如何使用数据注释来验证输入的特定类型

c# - 在 ASP.NET MVC 3 View 层次结构之间传递的数据

css - 带有 Bootstrap 颜色选择器的 Kendo UI 窗口,窗口总在最前面