asp.net - HttpModule 在 IIS 6 上未接收 cookie

标签 asp.net cookies iis-6 httpmodule ihttpmodule

我创建了一个 HttpModule,并使用 Windows Server 2003 在 IIS 6 上运行。我可以向浏览器发送 cookie,但在下一个请求时无法读取它们,cookie 始终为空。

如果我在 IIS 7 上运行这个模块,它工作得很好。 IIS 7 目前不是一个选项,因为我们还没有切换,这需要在此之前完成。

此外,我已经尝试使用 PostAcquireRequestState Hook 。

    public void Init(HttpApplication httpApp)
    {
        httpApp.BeginRequest += OnBeginRequest;
    }

    public void OnBeginRequest(Object sender, EventArgs e)
    {
        var httpApp = (HttpApplication)sender;
        var context = httpApp.Context;

        const string cookieName = "sId";

        if (!string.IsNullOrEmpty(context.Request.QueryString["cookie"]))
        {
            var ck = new HttpCookie(cookieName)
                            {
                                Value = httpApp.Context.Request.QueryString["cookie"],
                                Expires = DateTime.Now.AddDays(1)
                            };

            httpApp.Response.Cookies.Add(ck);
        }
        else
        {
            var cookie = httpApp.Request.Cookies[cookieName]
        }
    }

最佳答案

我遇到了类似的问题,但有不同的解决方案,所以我想我会分享,以防它对某人有帮助。我也采纳了 zengchun 的建议,使用一些工具来检查请求和响应 header 。由于我使用的是 IE,因此 F12 开发工具非常适合此操作。当我看到 cookie 的响应 header 时,我注意到安全标志已设置。果然,我已将代码从生产 SSL 托管站点复制到不使用 SSL 的测试站点,因此 cookie 上的安全标志阻止代码读取它。我更新了 web.config 以从 httpcookies 节点中删除 requireSSL,然后我的网站开始工作。 :)

关于asp.net - HttpModule 在 IIS 6 上未接收 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9914921/

相关文章:

ASP.NET 1.1 - "<%="和 "%>"标签在地址栏中呈现

c# - 提交后弹出窗口

windows - Web 应用程序 Kerberos 身份验证 : Is the proper way to combine with cookies?

javascript/jQuery 在 cookie 中存储对象并检索

asp.net-mvc - 保持 asp.net mvc 站点 IIS6 始终准备好接受请求

asp.net - VS Code : running ASP. NET SPA with Angular 4 并使用 NodeServices 选项 Launch With Debugging

javascript - 在Ajax选项卡面板的客户端点击事件上调用Javascript

angularjs - 无法在 Angularjs 版本 1.4.4 中使用 $cookies.putObject 为 cookie 设置安全标志

powershell - 使用Powershell或命令行启动/停止App Pool IIS6.0

c++ - IIS 和 argv[0] 路径语法