Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpContext.Request.cookies中缺少ASP.NET Cookie。Chrome/IE中逗号与分号分隔的Cookie_C#_Asp.net_Asp.net Mvc_Google Chrome_Cookies - Fatal编程技术网

C# HttpContext.Request.cookies中缺少ASP.NET Cookie。Chrome/IE中逗号与分号分隔的Cookie

C# HttpContext.Request.cookies中缺少ASP.NET Cookie。Chrome/IE中逗号与分号分隔的Cookie,c#,asp.net,asp.net-mvc,google-chrome,cookies,C#,Asp.net,Asp.net Mvc,Google Chrome,Cookies,我观察到一个问题,我向我的服务器发出请求,并检查HttpContext.request.Cookies集合在Chrome和IE中是否不同 我的过程如下: 为IE启动新的inPrivate浏览器,转到站点url 观察HttpContext.Request.Cookies以获得三个值,siteLang、siteDir、isNative 观察每个cookie的值分别为: HttpContext.Request.Cookies[“siteDir”]。值 HttpContext.Request.Cook

我观察到一个问题,我向我的服务器发出请求,并检查
HttpContext.request.Cookies
集合在Chrome和IE中是否不同

我的过程如下:

  • 为IE启动新的inPrivate浏览器,转到站点url
  • 观察
    HttpContext.Request.Cookies
    以获得三个值,siteLang、siteDir、isNative
  • 观察每个cookie的值分别为:

    • HttpContext.Request.Cookies[“siteDir”]。值
    • HttpContext.Request.Cookies[“siteLang”]。值
    • HttpContext.Request.Cookies[“isNative”]。值
      ==true
  • 为Chrome启动新的匿名浏览器,转到网站url

  • 观察
    HttpContext.Request.Cookies
    是否有one值,siteDir
  • 观察HttpContext.Request.Cookies[“siteDir”]的值。值为“ltr,siteLang=en-US,isNative=true”

  • 我还观察到
    HttpContext.Request.Headers[“Cookie”]
    包含以下依赖于浏览器的值:

    • siteLang=en-US;siteDir=ltr;isNative=true//IE

    • siteDir=ltr,siteLang=en-US,isNative=true//Chrome


    所以Chrome似乎是用逗号分隔我的cookies,IE使用分号,Mvc不知道如何处理逗号。还有谁见过这个吗?我觉得如果我的诊断是正确的,这个问题应该会非常普遍。非常感谢您的任何意见

    编辑 我查看了ASP.NET源代码,在HttpRequest.cs中找到了以下代码段(在此处找到:[):

    while(i

    你知道我是如何获得91884的信息来理解他们为什么忽略逗号分隔的cookies的吗?

    我现在也注意到了这种奇怪的行为。 但看看Fiddler,cookie列表实际上是以“;”分隔的形式发送的

    我使用的是Windows 10。我尝试将提交历史记录回滚到几个月前,但一直遇到这个问题


    这个问题似乎特别发生在SSL上。它是否与OS/WindowsUpdate相关?

    重要提示:当我打开fiddler时,我看到完全不同的结果,cookie按预期运行。我也在Win 10上,将进一步调查,我可以确认,确实是当fiddler处于混乱状态时,它发生了变化。作为调试中的一个肮脏的解决方法/我提出的本地模式:var cookieHeader=HttpContext.Current.Request.Headers[“Cookie”];if(cookieHeader!=null)HttpContext.Current.Request.Headers.Set(“Cookie”,cookieHeader.Replace(“,”,“;”);
    while (i < l) {
        // find next ';' (don't look to ',' as per 91884)
        j = i;
        while (j < l) {
            ch = s[j];
            if (ch == ';')
                break;
            j++;
        }
        // create cookie form string
        ...{continued}