背景情報: Mike Volodarsky によるこのブログ エントリに基づいて、.NET Framework を使用して IIS7 用のカスタム ハンドラーとカスタム モジュールを作成しました。
これまでのところ、ハンドラーとモジュールですべてが正常に機能していますが、ここに私の問題/シナリオがあります。
特定の URL に対する要求がハンドラーによって認識された場合、Cookie を読み取り、その情報を取得して、それらのデータを着信要求のヘッダーに追加する必要があります。
「IHttpHandler」メンバーのこれまでのコーディングは次のとおりです。
public void ProcessRequest(HttpContext context)
{
var response = context.Response;
//var request = context.Request;
var cookieInformation = GetSomeInformationFromCookie();
if (!string.IsNullOrEmpty(cookieInformation))
{
var nameValueCollection = new NameValueCollection
{{"CustomAspNetHeader", cookieInformation}};
response.Headers.Add(nameValueCollection);
}
// I would like to proceed the current request
// just with the updated header-information.
}
着信要求のヘッダー情報を更新する方法はありますか?
「<strong>MyPage.aspx」というページがあるとしましょう。PageLoad-Eventでは、次のように記述します。
foreach (var header in HttpContext.Current.Request.Headers)
{
var value = HttpContext.Current.Request.Headers[header.ToString()];
var s = string.Format("Header: <strong>{0}</strong>, Value: <strong>{1}</strong><br />", header, value);
Response.Write(s);
}
基本的に、foreach ループから次の情報を取得します。
- ヘッダー: 接続、値: キープアライブ
- ヘッダー: 受け入れ、値: text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8
- ヘッダー: Accept-Encoding、値: gzip、deflate、sdch
- ヘッダー: Accept-Language、値: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
- ヘッダー: Cookie、値: ASP.NET_SessionId=242xbd55fxhxv055hfunnj55
- ヘッダー: ホスト、値: localhost:61045
- ヘッダー: User-Agent、値: Mozilla/4.0 (互換性あり; MSIE 8.0; Windows NT 6.1)
次に、ハンドラーが IIS7-Manager で拡張子が.aspxのファイルをリッスンできるようにします。'<strong>MyPage.aspx' を 2 回目に実行すると、PageLoad-Eventが発生し、すべてのヘッダー情報が表示されます... ここに私の問題があります。ハンドラーが「MyPage.aspx」の着信要求を処理しており、PageLoad-Event に到達/起動しないため、何も表示されません。
着信要求のヘッダー情報を更新する別の手法があるかもしれません (.NET で)。
どんな助けでも大歓迎です。