2009-03-13 9 views
0

Httpハンドラが要求をIIS 6にパイプラインをバックアップして渡す方法はありますか?.net HttpHandlers Pass IIS6にパイプラインを要求する

はたとえば、私は動詞のHTTPハンドラを設定している場合=「(ワイルドカード)」パス=「(ワイルドカード).TXT」

のために、私はmyunformated.txtと呼ばれるファイルを持って、私はにIIS 6をしたいと思いますクエリー・ストリング・パラメーターが添付されていない場合は、ユーザーに送信してください。

すべてのアイデア?

答えて

2

あなたの質問に対する答えはノーです。それがIIS7の統合パイプラインだが、IIS6では利用できない。あなたは、のようなものをレスポンスコンテンツタイプ、文字セットおよびキャッシュ制御ヘッダを設定することを検討すべきであるが、context.Response.TransmitFileは、トリックを行います使用して、この特定のケースで

: -

HttpResponse Response = context.Response 

Response.ContentType = "text/plain"; 
Response.CharSet = "Windows-1252"; 
Response.AddFileDependency(filePath); 

// Set additional properties to enable caching. 
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)); 
Response.Cache.SetCacheability(HttpCacheability.Public); 
Response.Cache.SetValidUntilExpires(true); 
Response.TransmitFile(filePath); 

これはかなり重複するものIIS静的コンテンツハンドラが実行します。

+0

。 TransmitFileはファイルを出力ストリームに直接書き込んで、それをメモリにバッファリングしないようにして、その目標と偶然に結果をキャッシュしないのですか? –

+0

@ John:いいえ。キャッシングはメモリを使いますが、それは簡単に救済できるメモリだけです。他の場所でメモリが必要な場合、項目はキャッシュからサーバサイドキャッシュにドロップされます。すべてのコンテンツがメモリにロードされるまで、送信は遅延されません。 – AnthonyWJones

1

どうしてですか?Response.TransmitFile? - これはResponse.WriteFileとは異なり、これはファイル全体をロードしないことに注意してください。

完全に避け、リンクが別のファイル名を指しているようにしたい場合があります。この方法で、IISから必要なものをすべて取得します。特に、ダウンロードを再開します。

+0

最終変更ディレクティブのようなものはどうですか? –

+0

あなたはそれをヘッダーとして返すことができますが、なぜそれを避けたいのか分かります(iisが行うことができる他の重要なことがあります)...別のファイル名を使用することでそれを完全に避けてください;) – eglasius

関連する問題