注册以下 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: header_value
设置 Cookie:cookie_BeginRequest=cookie_value;路径=/
header_PreSendRequestContent: header_value
设置 Cookie:cookie_PreSendRequestContent=cookie_value;路径=/
相反,我看到了(注意重复的 Set-Cookie cookie_BeginRequest):
header_BeginRequest: header_value
设置 Cookie:cookie_BeginRequest=cookie_value;路径=/
设置 Cookie:cookie_BeginRequest=cookie_value;路径=/
header_PreSendRequestContent: header_value
设置 Cookie:cookie_PreSendRequestContent=cookie_value;路径=/
上面的标题是从 Fiddler 中提取的,以排除浏览器是问题的根源。我已经单步执行了代码,似乎 BeginRequest 事件在每个请求中只触发一次。这得到了 header_BeginRequest 标头仅出现一次的事实的支持。我还检查了该模块只注册了一次。测试均在 IIS Express 和 .Net 4.5 下运行。
这是预期的行为吗?