NullReferenceException на RouteTable.Routes - PullRequest
0 голосов
/ 28 июня 2011

Мой веб-проект ASP.NET MVC 3 работал нормально, затем я перекомпилировал его, и теперь я получаю эту ошибку (некоторые пути и пространства имен изменены для защиты невинных):

Ссылка на объектне установлен для экземпляра объекта.Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.NullReferenceException: для ссылки на объект не задан экземпляр объекта.

ИсточникОшибка:

Строка 66:
RouteTable.Routes.MapRoute (Строка 67:
"DefaultRoutes", // Имя маршрута Строка 68:
"{module} / {controller} / {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.RegisterEventSubscriptionWithIIS (IntPtr appContext, контекст HttpContext, обработчики MethodInfo []) + 191
System.Web.HttpApplication.InitSpecial (состояние HttpApplicationState, обработчики MethodInfo [] контекстные_компонентные тексты), контекстный интерфейс Http: 2Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr appContext, контекст HttpContext) +407 System.Web.Hosting.PipelineRuntime.InitializeApplication (IntPtr appContext) + 375

[экземпляр объекта HttpException 5 (исключение 0), исключение 0 (исключение) 0 (исключение 0): 0объект.]
System.Web.HttpRuntime.FirstRequestInit (контекст HttpContext) + 11642112
System.Web.HttpRuntime.EnsureFirstRequestInit (контекст HttpContext) + 141
System.Web.HectRequestWireServerWorksконтекст) + 4865877

Я использую IIS7.5 в Windows 7 x64, и пул приложений настроен для работы с .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
);

Ответы [ 2 ]

1 голос
/ 28 июня 2011

В вашем global.asax.cs вы можете написать так

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapRoute(....);//you should use routes parameter rather than RouteTable.Routes   
}
0 голосов
/ 28 июня 2011

Этот проект динамически загружает модули, и на исходной странице ошибок ASP.NET не было понятно, что исключение NullReferenceException вызывалось последней строкой вызова метода MapRoute ().

Оказывается, что _loadedModules было пустым, поэтому FirstOrDefault () возвращал null - отсюда исключение.

...