ASP.NETを使用してフォルダーに特定の404を設定する方法は?
-
06-07-2019 - |
質問
これは少し注意が必要です。この点について、いくつかのヒントをいただければ幸いです。
ここで私がやりたいことは:
-
ユーザーがアクセスしようとしました myapp.com/data/123456.mp3
-
test.mp3は存在しません
-
システムはユーザーを myapp.com/data/error.apsx?file=123456.mp3
大規模なシステムがmp3ファイルを処理する方法を処理するためにこれが必要です。
ユーザーがmyapp.com/otherFolder/notHere.whateverにアクセスしようとすると、システムは標準の404エラーを通常どおり返します。
IISでそれを指定する方法があることは知っていますが、プログラムで、または.netプロジェクトを使用して何かできることがあれば、それが大好きです。
編集:
myapp.com/data/にweb.configファイルを作成しました
<?xml version="1.0"?>
<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="/data/mp3/full/serveMp3.aspx"/>
</system.web>
</configuration>
これは機能していないようです。
解決
カスタムエラー http://aspnetresources.com/articles/CustomErrorPages.aspx
web.configで。
<customErrors
mode="RemoteOnly"
defaultRedirect="~/errors/GeneralError.aspx"
/>
他のヒント
最初に行う必要があるのは、デフォルトで.mp3はASP.NET拡張子ではなく、IISによって処理されるだけなので、ASP.NETがこれらのファイル要求を処理できるようにすることです。
実際にこれを処理したら、いくつかの方法が思い浮かびます。
1つ目は、OnUnhandledExceptionイベントを監視するHttpModuleを作成することです。 ASP.NETはHttpExceptionタイプの例外として404(およびすべてのHTTPエラー)をスローするため、モジュールは、キャッチ、リクエストの解析、および独自のエンドへのリダイレクトを行う場所を提供します。
もう1つの方法は、関心のあるフォルダーレベルでweb.configを作成し(これらは入れ子にすることができます)、そこにcustomerrorセクションを作成します。これはより簡単ですが、制御がはるかに少なくなります。私は一般的にモジュールを支持すると考えられているすべてのもの。
おそらく、特定のエラーを配置するフォルダーにweb.configを指定し、そのwebconfigに、示されたページを含むcustomerrorタグを配置できます。 または、メインのweb.config内でlocationタグを使用できます
しかし、これについてはわかりません