HTTP ハンドラーがリクエストをパイプラインを介して IIS 6 に戻し、リクエストを処理させる方法はありますか?
たとえば、verb="(wildcard)" path="(wildcard).txt" に設定された HTTP ハンドラーがあるとします。
myunformated.txt というファイルがあります。クエリ文字列パラメーターが添付されていない場合は、IIS 6 からユーザーに送信してもらいたいと思います。
何か案は?
HTTP ハンドラーがリクエストをパイプラインを介して IIS 6 に戻し、リクエストを処理させる方法はありますか?
たとえば、verb="(wildcard)" path="(wildcard).txt" に設定された HTTP ハンドラーがあるとします。
myunformated.txt というファイルがあります。クエリ文字列パラメーターが添付されていない場合は、IIS 6 からユーザーに送信してもらいたいと思います。
何か案は?
あなたの質問に対する答えはノーです。これは、IIS7 の統合パイプラインが実現するものですが、IIS6 では利用できません。
この特定のケースでは、context.Response.TransmitFile を使用するとうまくいきますが、Response のコンテンツ タイプ、文字セット、およびキャッシュ コントロール ヘッダーを次のように設定することを検討する必要があります。
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 の静的コンテンツ ハンドラーが行うこととほとんど同じです。
Response.TransmitFileだけではないのはなぜですか?- Response.WriteFile とは異なり、これはファイル全体をロードしないことに注意してください。
完全に回避し、リンクが別のファイル名を指すようにしたい場合があります。このようにして、IIS から必要なものをすべて取得します。特に、ダウンロードを再開します。