次の IHttpModule が登録されると、cookie_BeginRequest の重複した Cookie ヘッダーが取得されます。
public class MyModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest+=(sender, e) =>
{
SetValues("BeginRequest");
};
context.PreSendRequestContent+=(sender, e) =>
{
SetValues("PreSendRequestContent");
};
}
static void SetValues(string name)
{
var httpContext = HttpContext.Current;
var httpCookie = new HttpCookie("cookie_" + name, "cookie_value");
httpContext.Response.Cookies.Add(httpCookie);
httpContext.Response.Headers.Add("header_" + name, "header_value");
}
public void Dispose()
{
}
}
次のヘッダーが表示されることを期待しています。
header_BeginRequest: ヘッダー値
セット Cookie: cookie_BeginRequest=cookie_value; パス=/
header_PreSendRequestContent: header_value
セット Cookie: cookie_PreSendRequestContent=cookie_value; パス=/
代わりに、次のように表示されます (重複した Set-Cookie cookie_BeginRequest に注意してください):
header_BeginRequest: ヘッダー値
セット Cookie: cookie_BeginRequest=cookie_value; パス=/
セット Cookie: cookie_BeginRequest=cookie_value; パス=/
header_PreSendRequestContent: header_value
セット Cookie: cookie_PreSendRequestContent=cookie_value; パス=/
上記のヘッダーは Fiddler から抽出されたもので、ブラウザーが問題の原因であることを除外しています。コードを確認したところ、BeginRequest イベントはリクエストごとに 1 回だけ発生しているようです。これは、header_BeginRequest ヘッダーが 1 回しか表示されないという事実によって裏付けられています。また、モジュールが一度だけ登録されていることも確認しました。テストはすべて IIS Express および .Net 4.5 で実行されました。
これは予想される動作ですか?