ASP.NET Как использовать маршруты MVC, когда приложение публикуется как подпроект домена?
-
03-07-2019 - |
Вопрос
у меня есть веб-приложение, которое отлично работает при локальной отладке и тестировании.Однако, когда я публикую сайт на производственном сервере, маршрутизация нарушается.Это связано с тем, что он выполняется как подпроект на productionserver.
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
Решение
Для меня это звучит так, как будто это может быть связано с публикацией в iis 6.Там есть статья здесь об этом.
Для меня аналогичная проблема была решена путем добавления "Подстановочной карты приложения":
- В IIS щелкните правой кнопкой мыши и выберите Свойства для соответствующего виртуального каталога
- выберите вкладку Виртуальный каталог
- выберите Конфигурацию
- нажмите кнопку Вставить
- введите путь к aspnet-isapi.dll (обычно c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll).
Другие советы
Кстати, маршрутизация, похоже, работает на уровне приложения.Не нужно беспокоиться о вашем доменном имени или более высоких именах каталогов.