0

ASP.NET サイトでダウンロードできるようにしたい ZIP ファイルのライブラリがあります。

ファイルは、Web ファームからアクセスできる NAS デバイスに置かれています。

最初の戦略は次のとおりです。

  1. IIS 仮想ディレクトリを共有ドライブのパス /zipfiles にマップします。
  2. URL を指定すると、ユーザーは zip ファイルをダウンロードできます。

ただし、ユーザーがファイルへのリンクを共有すると、誰でもファイルをダウンロードできます。代わりに、サイトで ASP.NET フォーム認証を使用して、ファイル転送を開始する前にユーザーの要求を検証したいと考えています。

いくつかの問題: zip ファイルの要求は、ASP.NET ではなく IIS によって処理されます。したがって、フォーム認証の対象にはなりません。さらに、ASP.NET は ASP.NET スレッドを使い果たし、大きなファイルのダウンロードには対応できないため、ASP.NET でrequest を処理する必要はありません。したがって、*.zip 要求を処理するように asp.net dll を構成することはできません。

これに関するアイデアはありますか?

私たちが投げかけた 1 つのアイデアは次のとおりです。ダウンロードの最初の要求は、ashx ハンドラーに対するものです。このハンドラーは、認証後、データベースに保存されるダウンロード トークンを生成します。次に、ユーザーは、トークンが QueryString に追加されたファイルにリダイレクトされます (例: /files/xyz.zip?token=123456789)。トークンのチェックには ISAPI プラグインが使用されます。また、トークンは x 時間後に期限切れになります。これについて何か考えはありますか?ISAPI プラグインを実装していないので、これが機能するかどうかはわかりません。

セキュリティが問題になるため、カスタム コーディングは避けたいと考えており、定評のあるソリューションを使用したいと考えています。

4

2 に答える 2

0

フォーム認証は、ASP.NET なしでは実現できません。

ASP.NET をまったく使用したくない場合は、ファイルに NTFS アクセス許可を定義し、ユーザーにドメイン アカウントを作成することができます。それは本当にすぐに悪夢になります。

ASP.NET への大規模なダウンロードを処理するには、Cometを参照してください。これは基本的にIHttpHandlerですが、別の ThreadPool (ASP.NET ではない) を使用する必要があります。Smart Thread Poolを調べてみることをお勧めします。

数か月前に両方を組み合わせて、ダウンロード速度調整用のアプリケーションを作成しましたが、今では非常にスムーズに動作します。

于 2010-02-08T22:22:39.787 に答える
0

ハンドラーを使用して静的ファイルを管理することに関する懸念を読み、理解していますが、非同期ハンドラーを使用するとブロックされません。

適正な価格で求めている結果が得られると思います。

于 2010-02-28T21:14:33.550 に答える