5

Webフォームアプリケーションのサブフォルダー内で混合MVCアプリケーションを実行しています。

VS 2010デバッグ(カッシーニ)ではすべてがうまく機能しましたが、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ルートフォルダーからホーム/インデックスに手動で移動すると、そこからアプリケーションを正常に確認できます。

スローされたエラーを調べましたが、MVCルートではなく、サーバー転送を処理する回答のみが見つかりました。

IIS7.5また、ルート処理モジュール、統合モードで実行されているアプリケーションプールなどの構成も確認済みです。

どんな助けでもいただければ幸いです。

4

1 に答える 1

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
于 2012-05-30T16:26:28.653 に答える