WebC应用程序路由中的MVC3应用程序在IIS7.5中抛出HttpContext.SetSessionStateBehavior错误

时间:2012-05-17 16:38:42

标签: asp.net-mvc-3 iis-7.5 webforms

我在Web表单应用程序的子文件夹中运行混合MVC应用程序。

在VS 2010调试(Cassini)中,但是当我部署到IIS7.5

时,一切都运行良好

我收到以下错误:

'HttpContext.SetSessionStateBehavior' can only be invoked before
  'HttpApplication.AcquireRequestState' event is raised.

MVC应用程序子文件夹的httpHandler.ProcessRequest(HttpContext.Current);文件中的最后一行(default.aspx)出错。

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根文件夹手动导航到Home / Index,我可以从那里看到我的应用程序正常。

我查看了抛出的错误,我只找到了处理服务器传输而不是MVC路由的答案。

我还检查了路由处理模块的IIS7.5配置,集成模式下运行的应用程序池等。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分: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
相关问题