对于遗产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)
答案 0 :(得分:2)
在IIS中为.page创建一个处理程序映射,该请求将请求发送到MVC处理程序。然后,您可以使用MVC路由处理请求