我的ASP.NET MVC 3 web项目运行良好,然后我重新编译了它,现在我得到了这个错误(为了保护无辜的人,修改了一些路径和名称空间):
对象引用未设置为对象的实例。描述:在执行当前web请求时发生了未处理的异常。请查看堆栈跟踪以获得有关错误的更多信息,以及它起源于代码的位置。
异常详细信息: System.NullReferenceException:对象引用未设置为对象的实例。
源错误:
第66行:
RouteTable.Routes.MapRoute(第67行:
"DefaultRoutes",//路线名称为68号线:
带有参数的“{模块}/{控制器}/{action}/{id}”,// URL
源文件:....\Global.asax.cs
行: 66
堆栈跟踪:
NullReferenceException:对象引用没有设置为对象的实例。
Project.MvcApplication.RegisterRoutes(RouteCollection路由)在D:.....\Global.asax.cs:66 Project.MvcApplication.Application_Start()在D:.....\Global.asax.cs:139
HttpException (0x80004005):对象引用没有设置为对象的实例。
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext上下文,HttpApplication应用程序) +4051717 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext上下文,MethodInfo[]处理程序)
System.Web.HttpApplication.InitSpecial(HttpApplicationState状态,MethodInfo[]处理程序,IntPtr appContext,HttpContext上下文) +352 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext上下文) +407 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +375
HttpException (0x80004005):对象引用没有设置为对象的实例。
( System.Web.HttpRuntime.FirstRequestInit(HttpContext上下文) +11642112
( System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext上下文) +141
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext上下文) +4865877
我在Windows7 x64上使用IIS7.5,应用程序池被配置为使用.NET 4和“集成”托管管道运行。
我尝试过重新启动,也清理了bin和obj文件夹,但没有成功。
一些额外的信息被证明是重要的--上面错误页面中缺少的行:
RouteTable.Routes.MapRoute(
"DefaultRoutes", // Route name
"{module}/{controller}/{action}/{id}", // URL with parameters
new { module = _loadedModules.FirstOrDefault().Name, controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);发布于 2011-06-28 05:16:42
这个项目动态加载模块,而原始ASP.NET错误页面中不清楚的是,NullReferenceException是由MapRoute()方法调用的最后一行引起的。
原来_loadedModules是空的,所以FirstOrDefault()返回null --因此出现了异常。
发布于 2011-06-28 05:01:55
在您的global.asax.cs中,您可以这样编写
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(....);//you should use routes parameter rather than RouteTable.Routes
}https://stackoverflow.com/questions/6501682
复制相似问题