3

.net 4.0 Web アプリケーションは、ローカル コンピューターと古い Web サーバーで魅力的に動作します。どちらのコンピューターも、従来のアプリケーション プールと .net 4.0 アプリケーション プールを問題なく使用しています。

しかし、新しい Web サーバーに移行すると、URL を書き換える代わりに 404 エラーが発生します。できる限りシンプルな新しいアプリケーションを作成しました。以下のように、すべての要求パスを default.aspx に書き換えます。

Global.asax.cs

protected void Application_BeginRequest(object sender, EventArgs e)
{
    Context.RewritePath("default.aspx", false);
}

ファイル自体に直接リクエストを行うと default.aspx にアクセスできますが、「default.aspx」以外のアドレスにリクエストを行うと、静的ファイル ハンドラから 404 エラーが発生します。

どうすれば修正できますか?

フルサイズ画像はこちら ここに画像の説明を入力

4

2 に答える 2

3

アプリケーション プールの ID 設定を確認する必要があります。Web アプリケーションの appPool ID が ApplicationPoolIdentity に設定され、マネージド パイプライン モードが統合されていることを確認してください。

次に、Web 構成の system.webserver モジュールを確認し、アプリケーションの Web 構成でこの構成を有効にします。

<system.webServer><modules runAllManagedModulesForAllRequests="true"> </modules></system.webServer>
于 2012-05-15T07:12:12.270 に答える
1

同様の問題が発生しました。Visual Studio 2008 開発サーバーと IIS 6.5 では実行できましたが、IIS 7.5では実行できなかった APP_Code フォルダーに URL 書き換えクラスがあります。「OnBeginRequest」が起動しないように見え、同じ 404 エラーを受け取っていました。かなりの試行錯誤の後、私の問題を解決する組み合わせを見つけました:

IIS 7.5 では、Web サイトの基本設定で、アプリケーション プールの設定を "Classic .NET AppPool" に変更しました。

Web.config で、URL 書き換えクラスを参照するために次を追加しました。

<httpModules>
     <add name="*URLRewriteClassName*" type="*Namespace.URLRewriteClassName*"/>
  </httpModules>      

グローバル アプリケーション クラスから書き換えコードを実行しているので、最初にアプリケーション プールを変更して、何が起こるかを確認します。うまくいけば、これが役に立ち、幸運を祈ります!

于 2012-05-15T15:43:46.007 に答える