2012-04-03 5 views
0

Für ältere reasons wir haben Urls mit '.page' in ihnen wie so enthält:machen MVC behandeln Urls Punkte (.Seite)

/controller.page/action

Wir haben wieder neu geschrieben die App, so dass die Urls sind keine länger in diesem Format und wir müssen sie 301 umleiten, was im Code passieren muss. Die neue App ist eine MVC 3 & .net 4 und ist IIS 7 gehostet.

Das Problem ist, IIS sieht die .page in der URL, dann auf der Suche nach einem Handler für diese Erweiterung nicht zu finden, und dann eine 404.0 zurückgeben und nicht die Anfrage aus zu .net, wo wir dann die Preform umleiten.

Irgendeine Idee, wie man das löst?

Ich habe versucht, diese Prozedur in dem web.config hinzufügen:

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

Aber ich bekomme diese Fehlermeldung:

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) 

Antwort

2

für Ihre .page eines Handler Mapping in IIS erstellen, die die Anforderungen senden an den MVC-Handler. Sie können dann die Anfragen mit MVC Routing behandeln

IIS edit handler

Verwandte Themen