2009-03-09 8 views
2

IIS7で/ topFolder /という仮想フォルダがあり、そのフォルダにはブラウザ(xml、html、swf、docなど)に表示できるファイルがあればIISの観点から「管理されていない」リソース)。 要求の前にフォルダの下にあるファイルを開く権限を与える前に、ユーザがサブフォルダと問題のファイルの "ライセンス"を持っているかどうかを確認するためにいくつかのセッション変数を調べる必要があります。ASP.netでの静的ファイルと認証

IHttpModuleとIReadOnlySessionStateインターフェイスでモジュールを実装しようとしましたが、ファイルが "静的"で、IISが管理していない(Aspx、ashxなど)場合、セッションは常にAcquireRequestStateイベントでnullです。

カスタムHttpHandlerを使用している場合、私はセッションを取得しますが、コンテンツがどのように応答に送信されるかを実装する必要もあります。編集:ユーザーはファイルをダウンロードしていないので、StaticFileModuleと同じようにIISにファイルを提供したいだけです。要求/ topFolder/*の場合 1:セッションおよびライセンスなど Aを確認してください)、[OK]場合は、ファイル を提供し続けるハンドラ/モジュールは、本当にだから私は本当に次の操作を実行したいStaticFileModuleWithAuthorizationHook ...

する必要がありますb)OKでない場合は、要求を中断するか、または応答としてFORBIDDENを送信します。

誰かが助けてくれることを願っています。

答えて

1

これはhttphandler経由で処理できるはずです。簡単な方法は、アクセス権がある場合にユーザーにファイルを送信するための組み込みのメソッドを使用することです。

This article(下段)は、これを行う方法の例を示しています。

+0

ありがとうございますが、これは少し異なります。 URL http://myserver.com/topFolder/something/foo.htmlをイメージ化してください。 私はそれをダウンロードしません。私はファイルを提供しますが、私はセッションを確認してデータベース往復を行った後にのみ行います。これは、基本的には、カスタムセキュリティが必要なオープン仮想ディレクトリです。 –

+0

その場合は、単にresponse.writebytesを実行してファイルを書きます。ヘッダーを設定してコンテンツの廃棄を設定しないでください。 –

+1

ランダムなコンテンツは使用できません。 .swfファイルでこれを試してみると、ブラウザはレンダリングの方法を知らず、単にバイナリ文字としてレンダリングします。 私は実際には、チェック後にIISがレンダリング/提供するようにして、ブラウザーがランダムなコンテンツをレンダリングする方法には関係しません。 –

関連する問題