2008-10-20 8 views
2

Я, вероятно, обозреваю что-то очень простое здесь, но я пытаюсь перенаправить все плохие URL-адреса на действие, которое фильтрует URL-адрес на основе условий, а затем либо 301 перенаправляет на подходящую страницу, либо выдает 404 страницы.Перенаправить все запросы в ASP.NET MVC на IIS6

Для этого у меня есть маршрут, как это в конце моего маршрута таблицы:

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 для маршрутизации.

Есть ли простое решение/я что-то пропускаю?

EDIT: Это связано с this question, однако под URL-адресами IIS6 без .mvc не отправляются для обработки ASP.NET MVC.

ответ

7

Скорее всего, при развертывании на сервере ASP.Net не вызывается.

Я бы установил сопоставление подстановочных знаков в IIS, чтобы ваши запросы использовали ASP.Net для обслуживания запросов.

Откройте диспетчер IIS, щелкните приложение правой кнопкой мыши, откройте вкладку «Свойства», затем «Домашняя страница», затем нажмите «Конфигурация». В списке подстановочных карт нажмите «Вставить» (не «Добавить», что сбивает с толку чуть выше), а затем введите C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll для «Исполняемый файл» и снимите флажок «Проверить, существует ли файл.

Для получения дополнительной информации, пожалуйста, посетите источник, который помог мне с этим вопросом на: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

+0

В первый раз я попробовал это я не заметил, что «Убедитесь, что файл существует» должен был быть снят. – Pedro 2017-07-26 19:57:53