1

ASP .NET 負荷分散アプリケーション (Web サービスと Web サイト) があります。SQL サーバー上で実行されます。ダウンロード用に大きなファイルを提供できるようにする必要があります。ただし、負荷分散の状況により、ファイルはファイル システムではなく SQL データベースに格納されます。BITS が最良のアプローチのようです。クライアントを完全に制御できます。ただし、データベースからファイルを読み取るように BITS を構成する方法がわかりません。そのための C# コードの書き方は知っていますが、ファイル システムからファイルを読み取るのではなく、BITS をコードにフックする方法がわかりません。

何か案は?

4

2 に答える 2

2

System.Web.IHttpHandler を実装することにより、カスタム http ハンドラーを作成できます。ProcessRequest(HttpContext context) メソッドは、データベースからファイルを取得するコードを記述する場所です。BITS は範囲要求で動作するため、context.Request.Headers["Range"] の値を解析して、要求された開始バイトと終了バイトを取得する必要があります。ProcessRequest では、SqlCommand.ExecuteReader(CommandBehavior.SequentialAccess) メソッドを使用してデータベースからバイナリを読み取り、結果のバイナリを context.Response.OutputStream に設定できます。最後に context.Response.Flush() を呼び出すことを忘れないでください。

カスタム HttpHandler は、特定のファイル拡張子 (「.file」など) を提供します。これは、IIS で行う必要があることです。

両方の IIS バージョン

  1. web.config のセクションに追加します。

IIS6.0

  1. Web サイトの MIME タイプとして .file (application/x-zip-compressed) 拡張子を追加します。

  2. アプリケーション拡張機能を追加 (Web サイトのプロパティ  仮想ディレクトリ  構成  マッピング)

拡張子: .file 実行可能パス: %windir%\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll %windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll

IIS7.0

  1. web.config のセクションに追加します。

  1. web.config のセクションに追加します。

        <mimeMap fileExtension=".file" mimeType="application/x-zip-compressed" />
    

始めるにはこれで十分だと思います。

于 2010-08-27T17:50:11.793 に答える
0

2008 Books Online OpenSqlFilestreamをご覧ください。その API には、役立つ例があります。

于 2010-06-03T16:20:45.530 に答える