在BeginRequest中添加时,Cookie标头会出现两次

时间:2013-03-18 22:19:13

标签: c# asp.net .net

当注册以下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

     

Set-Cookie:cookie_BeginRequest = cookie_value;路径= /

     

header_PreSendRequestContent:header_value

     

Set-Cookie:cookie_PreSendRequestContent = cookie_value;路径= /

相反,我看到(注意重复的Set-Cookie cookie_BeginRequest):

  

header_BeginRequest:header_value

     

Set-Cookie:cookie_BeginRequest = cookie_value;路径= /

     

Set-Cookie:cookie_BeginRequest = cookie_value;路径= /

     

header_PreSendRequestContent:header_value

     

Set-Cookie:cookie_PreSendRequestContent = cookie_value;路径= /

上面的标题是从Fiddler中提取的,以排除浏览器成为问题的根源。 我已经逐步完成了代码,看起来BeginRequest事件每个请求只触发一次。这是由header_BeginRequest标头只出现一次这一事实支持的。我还检查过该模块只注册了一次。测试全部在IIS Express和.Net 4.5下运行。

这是预期的行为吗?

0 个答案:

没有答案