使MVC处理包含点的URL(.page)

时间:2012-04-03 11:42:05

标签: asp.net-mvc redirect iis-7

对于遗产reasons,我们的网址中包含'.page',如下所示:

  

/controller.page/action

我们已经重新编写了应用程序,因此网址不再采用这种格式,我们需要301重定向它们,这需要在代码中进行。新应用程序是MVC 3& .net 4并且是IIS 7托管。

问题是,IIS正在网址中看到.page,然后寻找此扩展程序的处理程序找不到它,然后返回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 个答案:

答案 0 :(得分:2)

在IIS中为.page创建一个处理程序映射,该请求将请求发送到MVC处理程序。然后,您可以使用MVC路由处理请求

IIS edit handler