2012-02-06 2 views
0

Это странный вариант.MVC3 Ресурс не найден - Страница по умолчанию

Веб-приложение, с которым я работаю в течение нескольких месяцев, работало абсолютно нормально до двух дней назад.

Основная структура, о которой идет речь, включает в себя ряд областей (основная проблема, относящаяся к области «Администратор»), контроллер/представление по умолчанию на самом высоком уровне проекта MVC и водопроводная система Castle.Windsor DI.

В самом начале страницы по умолчанию для раздела «Администратор» отображается сообщение «ресурс не найден». Это сообщение не зависит от доступа к этой странице через RedirectToAction (после входа в систему) или через стандартный возврат (...) через систему меню.

У кого-нибудь есть причины, по которым данный конкретный маршрут больше не действителен? Или что здесь происходит?

NB: - Другие маршруты по умолчанию по умолчанию правильно сохраняются - Я могу получить доступ ко всем другим страницам с помощью прямого URL-адреса в адресной строке. - маршрут по умолчанию для администратора (и 8 других я требую) появляются хорошо в таблице маршрутизации

Global.asax материала:

регистрации
protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 

     RegisterGlobalFilters(GlobalFilters.Filters); 
     RegisterModelBinders(); 

     RegisterRoutes(RouteTable.Routes); 

     ServiceLocator.SetLocatorProvider(() => new WindsorServiceLocator(_container)); 

     BoostrapContainer(); 
    } 

    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); 

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "LogOn", id = UrlParameter.Optional } 
     ); 
    } 

админки:

public override string AreaName 
     { 
      get 
      { 
       return "Admin"; 
      } 
     } 

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     "Admin_default", 
     "Admin/{controller}/{action}/{id}", 
     new { controller = "AdminDashboard", action = "AdminDashboard", id = UrlParameter.Optional } 

    ); 
} 
  • стоит отметить регистрацию администратора. Я попытался указать пространство имен явно с помощью:

    новый { "xx.xx.xx.xx.Admin"}

Но не повезло.

Однако, пытаясь набрать localhost/Admin результаты все еще в ресурсе не найдены.

enter image description here

enter image description here

ответ

0

Используйте RouteDebugger Phil Haack wrote, и убедитесь, что, когда вы идете на этот маршрут, это не ударяя другой маршрут первым.

Маршруты - это дело «одной из лучших побед». Это включает в себя регистрацию области. RouteDebugger покажет вам, в каком порядке он считает, что маршруты в

сделать свой маршрут администратора это:.

context.MapRoute(
    "Admin Dashboard Route", 
    "admin", 
    new { area = admin, controller = "admindashboard", action = "dashboard" } 
); 

и место, что в вашей зоне регистрации.

Он должен решить вашу проблему.

Проблема в том, что ваш маршрут недостаточно конкретный.

Он хочет, «Admin/something/something», и код говорит: «Ну, если« admin »/ blank приходит, что не соответствует маршруту« admin/something/something », но это соответствует типу «по умолчанию».Он просматривает количество сегментов, которые вы заполнили, а также то, что (или что нет) в них.

+0

Привет, Джордж, я установил отладчик NuGet, который уже написал Фил. Несмотря на то, что он отлично работает для начальной страницы входа и отображает маршруты, по которым существует admin_default, как только я нахожу логин (или, альтернативно, с другой страницы), потому что ресурс не найден, информация отладки теряется? – M05Pr1mty

+0

Вы не хотите использовать тот, который работает как «контроль», а вы хотите, чтобы он перехватил вызовы, разместив конфигурацию для него в вашем global.asax. Поскольку вы не можете попасть на страницу, тот, который работает как контроль, не поможет вам здесь. –

+0

Нам также необходимо увидеть все ваши маршруты и URL-адреса, которые вы пытаетесь ударить. –

Смежные вопросы