2012-05-17 7 views
5

Ich bin eine gemischte MVC-Anwendung in einem Unterordner einer Web Forms-Anwendung ausgeführt.MVC3-Anwendung in Webforms Application Routing wirft einen HttpContext.SetSessionStateBehavior-Fehler in IIS7.5

Alles hat super funktioniert in VS 2010 debug (Cassini), aber wenn ich zu IIS7.5 eingesetzt

Ich habe folgende Fehlermeldung:

'HttpContext.SetSessionStateBehavior' kann nur vor aufgerufen werden ‚HttpApplication.AcquireRequestState 'Ereignis wird ausgelöst.

Es Fehler in der letzten Zeile (httpHandler.ProcessRequest (HttpContext.Current);) in der default.aspx-Datei des Unterverzeichnisses MVC-Anwendung.

public void Page_Load(object sender, System.EventArgs e) 
     { 
      string pathToRewriteTo = Request.Path.ToLowerInvariant().Replace("default.aspx", "Home/Index"); 
     HttpContext.Current.RewritePath(pathToRewriteTo, false); 
     IHttpHandler httpHandler = new MvcHttpHandler(); 
     httpHandler.ProcessRequest(HttpContext.Current); 
    } 

Allerdings, wenn ich zu Hause/Index aus dem MVC Stammordner manuell navigieren kann ich meine Anwendung fein von dort sehen.

Ich habe den Fehler geworfen geworfen und ich finde nur Antworten mit Server-Übertragungen und nicht MVC-Routen.

ich auch geprüft habe bereits meine IIS7.5 Konfiguration für die Route Handhabungsmodul, Anwendungspool im integrierten Modus ausgeführt wird, usw.

Jede mögliche Hilfe würde geschätzt.

Antwort

8

Wir sahen uns einem ähnlichen Problem gegenüber. Es gibt Änderungen in MVCHttpHandler in MVC2 und höher.

Sie müssen es ändern, um httpContext.Server.TransferRequest zu verwenden.

Versuchen Sie, die folgenden Code-Schnipsel:

var httpContext = HttpContext.Current; 
httpContext.Server.TransferRequest(Url, true); // change to false to pass query string parameters if you have already processed them