1

ちょっと難しいので、どなたか教えていただけると嬉しいです。
これが私がやりたいことです:

  • ユーザーが myapp.com/data/123456.mp3 にアクセスしようとしています

  • test.mp3 が存在しません

  • システムはユーザーを myapp.com/data/error.apx?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>

これは機能していないようです。

4

3 に答える 3

2

最初に行う必要があるのは、ASP.NET がこれらのファイル要求を処理できるようにすることです。これは、既定では .mp3 は ASP.NET 拡張子ではなく、IIS によってのみ処理されるためです。

実際にこれを処理する方法がいくつか思い浮かびます。

1 つ目は、OnUnhandledException イベントを監視する HttpModule を作成することです。ASP.NET は 404 (およびすべての HTTP エラー) を HttpException タイプの例外としてスローするため、モジュールは、要求をキャッチして解析し、独自の目的にリダイレクトする場所を提供します。

もう 1 つの方法は、関心のあるフォルダー レベルで web.config を作成し (これらは入れ子にすることができます)、そこに customerror セクションを作成することです。これはより簡単ですが、制御がはるかに少なくなります。すべてのことを考慮して、私は一般的にモジュールを支持します。

于 2009-09-11T19:11:10.190 に答える
0

おそらく、特定のエラーを入れたいフォルダーの中に web.config を入れて、その webconfig に指定されたページの customerror タグを入れるか、メインの web.config の中で location タグを使うことができます。

しかし、私はこれについて確信が持てません

于 2009-09-11T19:06:48.763 に答える