1

IIS7 で問題なく動作する ASP.NET 4.0 Web アプリケーション (mvc ではなく Web フォーム。asp.net ルーティングは使用されていません) があります。IIS6 で実行して に移動しようとするとhttp://localhost/MyApp/、次の例外が発生します。

File does not exist.
System.Web.HttpException
 at System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response) (+0 IL, +2509040 JIT)
 at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context, String overrideVirtualPath) (+54 IL, +198 JIT)
 at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state) (+263 IL, +347 JIT)
 at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() (+214 IL, +8967220 JIT)
 at System.Web.HttpApplication.ExecuteStep(HttpApplication.IExecutionStep step, Boolean& completedSynchronously) (+54 IL, +184 JIT)

この出力は、私自身のカスタム エラー ページからのものであることに注意してください。したがって、.NET 自体は正常に動作しています。リモートでデバッグすることもできます。

と入力するhttp://localhost/MyApp/Default.aspxと、すべて正常に動作し、デフォルトのページなどが表示されます。最初に考えたのは、既定のドキュメントが IIS で指定されていないということですが、指定されています。さらに悪いことに、完全に無効にしても、同じエラー メッセージが表示されます (そうです、IIS を再起動し、ブラウザのキャッシュをクリアしました)。

の要求/は常に ASP.NET に直接送信されるように見えますが、既定のドキュメントの概念がないため混乱します。しかし、ワイルドカード マッピングが定義されていません。

4

1 に答える 1

1

グーグルの後、これを解決策として見つけました。その関係はありませんが、その機能についてコメントする人もいます。これを試してみてください。

Windows レジストリで、次のノードを開きます: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0

1.EnableExtensionlessUrls という名前の新しい DWORD 値を作成します。2.EnableExtensionlessUrls を 0 に設定します。これにより、拡張子のない URL の動作が無効になります。3.レジストリ値を保存し、レジストリ エディタを閉じます。4. iisreset コマンド ライン ツールを実行します。これにより、IIS は新しいレジストリ値を読み取ります。

于 2012-01-23T11:08:38.737 に答える