2009-04-29 4 views
3

У меня есть webapp, который отлично работает при отладке и тестировании локально. Однако, когда я публикую сайт на сервере productionserver, маршрутизация перепутана. Это происходит из-за того, что он работает как суб-проект на производственном сервере.ASP.NET MVC Как использовать маршруты, когда приложение публикуется как SubProject домена?

 
Testing:  http://localhost:xxx/ 
Production: http://remotehost/webapp/ 

Как настроить маршрутизацию?

Это моя текущая настройка маршрутизации (в основном по умолчанию). Сервер отображает действие контроллера по умолчанию, когда я посещаю http://remotehost/webapp/. Но когда я жестко закодировать контроллер (http://remotehost/webapp/Project/ он не работает ...

Shared Sub RegisterRoutes(ByVal routes As RouteCollection) 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}") 

    routes.MapRoute("ProjectsByCategory", "Project/Category/{id}", _ 
        New With {.controller = "Project", .action = "ListByCategory", .id = ""}, _ 
        New With {.id = "^[0-9]+"}) 


    routes.MapRoute(_ 
     "Default", _ 
     "{controller}/{action}/{id}", _ 
     New With {.controller = "Project", .action = "Index", .id = ""} _ 
    ) 

End Sub 

ответ

3

Для меня это звучит, как это может быть связано с публикацией на IIS 6. Там в статье here об этом.

для меня подобная проблема была решена путем добавления «Wildcard карту приложения»:

  • в IIS щелкните правой кнопкой мыши и выберите Свойства для виртуального каталога в вопросе
  • выберите виртуальная менюКаталог
  • выберите Конфигурация
  • нажмите кнопку Вставить
  • введите путь к записи ASPNET-ISAPI.DLL (обычно C: \ Windows \ microsoft.net \ Framework \ v2.0.50727 \ aspnet_isapi.dll).
+0

У меня было приложение, работающее как виртуальный каталог, а не приложение. И мне также нужно было добавить подстановочное сопоставление для перезаписи URL-адресов. Спасибо – Ropstah

0

Кстати, маршрутизация работает на уровне приложения. Не нужно беспокоить имена доменных имен или более высоких каталогов.