Перенаправить все запросы в ASP.NET MVC на IIS6
-
03-07-2019 - |
Вопрос
Я, вероятно, упускаю из виду кое-что действительно простое здесь, но я пытаюсь перенаправить все плохие URL-адреса на действие, которое фильтрует URL-адрес по условиям, а затем либо 301 перенаправляет на подходящую страницу, либо выдает страницу 404.
Для этого у меня есть такой маршрут в конце таблицы маршрутов:
routes.MapRoute("Error", "{*url}", new { controller = "Main", action = "Error" });
И подобное действие:
public ActionResult Error(string url)
{
if (/* Conditions are met... */)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", /* Destination URL */);
Response.End();
}
Response.StatusCode = 404;
return View(/* 404 page... */));
}
Это прекрасно работает локально.
Однако при развертывании в IIS6 URL-адреса, которые не включают .mvc (например, oldfile.php), никогда не отправляются процессу ASP.NET для маршрутизации.
Есть ли простое решение / я что-то пропускаю?
РЕДАКТИРОВАТЬ: Это связано с этим вопросом , однако в IIS6 URL-адреса без .mvc не отправляются для обработки ASP.NET MVC.
Решение
Скорее всего, при развертывании на сервере ASP.Net не вызывается.
Я бы настроил отображение подстановочных знаков в IIS, чтобы ваши запросы использовали ASP.Net для обслуживания запросов. Р>
Откройте диспетчер IIS, щелкните правой кнопкой мыши свое приложение, перейдите в «Свойства», перейдите на вкладку «Домашний каталог» и нажмите «Конфигурация». В разделе «Сопоставления приложений с подстановочными знаками» нажмите «Вставить» (не «Добавить», что немного запутанно), а затем введите C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll для & # 8220; Исполняемый файл & # 8221; и снимите флажок Убедитесь, что файл существует.
Для получения дополнительной информации посетите источник, который помог мне с этой проблемой, по адресу: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/ р>