Заставить MVC обрабатывать URL-адреса, содержащие точки (.page) - PullRequest
0 голосов
/ 03 апреля 2012

По устаревшим причинам у нас есть URL с '.page' в них, например, так:

/ controller.page / действие

Мы переписали приложение, поэтому URL больше не в этом формате, и нам нужно 301 перенаправить их, что должно произойти в коде. Новое приложение представляет собой MVC 3 & .net 4 и размещено на IIS 7.

Проблема в том, что IIS видит .page в URL, затем ищет обработчик для этого расширения, не находит его, а затем возвращает 404.0 и не передает запрос слишком .net, где мы можем затем выполнить перенаправление .

Есть идеи, как решить эту проблему?

Я попытался добавить этот обработчик в web.config:

<add name="LegacyMVC" path="*.page" verb="*"
    type="System.Web.Mvc.MvcHttpHandler" preCondition="integratedMode" />

Но я получаю эту ошибку:

System.NotSupportedException: Specified method is not supported.
   at System.Web.Routing.StopRoutingHandler.GetHttpHandler(RequestContext requestContext)
   at System.Web.Routing.UrlRoutingHandler.ProcessRequest(HttpContextBase httpContext)
   at System.Web.Mvc.MvcHttpHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

1 Ответ

2 голосов
/ 03 апреля 2012

Создайте сопоставление обработчика в IIS для вашей .page, которое отправляет запросы обработчику MVC.Затем вы можете обрабатывать запросы с помощью маршрутизации MVC

IIS edit handler

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...