2012-05-17 27 views
5

我在Web窗體應用程序的子文件夾中運行混合MVC應用程序。MVC3應用程序內部Webforms應用程序路由在IIS7.5中拋出一個HttpContext.SetSessionStateBehavior錯誤

一切都在VS偉大的工作2010調試(卡西尼),但是當我部署到IIS7.5

我得到了以下錯誤:

「HttpContext.SetSessionStateBehavior」只能「之前調用HttpApplication.AcquireRequestState '事件引發了。

它在MVC應用程序子文件夾的default.aspx文件的最後一行(httpHandler.ProcessRequest(HttpContext.Current);)中出現錯誤。

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); 
    } 

但是,如果我手動導航到家庭/索引從MVC根文件夾我可以看到我的應用程序從那裏罰款。

我查了一下被拋出的錯誤,我只找到處理服務器傳輸而不是MVC路由的答案。

我也已經檢查了我的IIS7.5配置的路由處理模塊,以集成模式應用程序池運行等

任何幫助,將不勝感激。

回答

8

我們遇到過類似的問題。 MVC2及更高版本中的MVCHttpHandler發生了更改。

您需要將其更改爲使用httpContext.Server.TransferRequest

嘗試下面的代碼片段:

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