0

我的 ASP.NET MVC 3 web 项目运行良好,然后我重新编译它,现在我收到此错误(更改了一些路径和命名空间以保护无辜者):

你调用的对象是空的。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。

源错误:

第 66 行:
RouteTable.Routes.MapRoute( 第 67 行:
"DefaultRoutes", // 路由名称 第 68 行:
"{module}/{controller}/{action}/{id}", // 带参数的 URL

源文件:....\Global.asax.cs
行:66

堆栈跟踪:

[NullReferenceException:对象引用未设置为对象的实例。] D 中的
Project.MvcApplication.RegisterRoutes(RouteCollection routes):.....\Global.asax.cs:66 D 中的 Project.MvcApplication.Application_Start(): .....\Global.asax.cs:139

[HttpException (0x80004005): Object reference not set to an instance of an object.]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +4051717 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[ ] 处理程序)+191
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 context)+11642112
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+141
System.Web.HttpRuntime。 ProcessRequestNotificationPrivate(IIS7WorkerRequest WR,HttpContext 上下文)+4865877

我在 Windows 7 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
);
4

2 回答 2

1

在你的 global.asax.cs 中你可以这样写

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapRoute(....);//you should use routes parameter rather than RouteTable.Routes   
}
于 2011-06-28T05:01:55.187 回答
0

This project dynamically loads modules and what wasn't clear from the original ASP.NET error page was that the NullReferenceException was being caused by the final line of the MapRoute() method call.

It turns out that _loadedModules was empty, so FirstOrDefault() was returning null - hence the exception.

于 2011-06-28T05:16:42.950 回答