c# - 当线程区域性不是英语时,.NET CookieException "Cookie format error"- 仅在某些环境中

标签 c# asp.net .net cookies currentculture

我正在尝试在调用其他 Web 服务的 ASP.NET 应用程序中进行一些 cookie 管理。我遇到一个仅在某些环境中才能重现的错误。我的问题是:

  1. 生产和开发之间的差异是否足以导致此问题?
  2. 我如何找出生产/开发之间的区别?
  3. 我可以采取什么措施来解决此问题?

以下是我用来重现该问题的详细信息。我看到的错误是:

Unhandled Exception: System.Net.CookieException: 
An error occurred when parsing the Cookie header for Uri 'http://example.com/'. 
---> System.Net.CookieException: <b>Cookie format error.</b>
   at System.Net.CookieContainer.CookieCutter(Uri uri, String headerName, 
         String setCookieHeader, Boolean isThrow)
   --- End of inner exception stack trace ---
   at System.Net.CookieContainer.CookieCutter(Uri uri, String headerName, 
         String setCookieHeader, Boolean isThrow)
   at System.Net.CookieContainer.SetCookies(Uri uri, String cookieHeader)
   at Program.Main() in c:\Sample\Program.cs:line 21

我创建了一个控制台应用程序来重现该问题(相关部分如下)。完整代码位于https://compilr.com/adutton/cookiecutterexample/main.cs

string[] cultures = new[] { "en-US", "es-MX" };
const string cookieHeader = ".ASPXAUTH=SECURITYINFO; domain=.example.com; "
    + "expires=Mon, 06-Mar-2023 18:36:33 GMT; path=/; HttpOnly";

foreach (string culture in cultures)
{
    Console.WriteLine("CookieCutting with culture: " + culture);
    Thread.CurrentThread.CurrentCulture = new CultureInfo(culture);
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);

    CookieContainer ctr = new CookieContainer();
    // The following line throws an exception
    ctr.SetCookies(new Uri("http://example.com/"), cookieHeader);
}

此代码适用于我的开发计算机(Windows 7、x64、.NET 4.5.50709),但不适用于生产环境(Windows Server 2008 R2 Enterprise、x64、.NET 4.0.30319),其中代码引发 es-MX 区域性异常。

如果我从 cookie header 中删除日期,异常就会消失,这让我相信这是 cookie 解析器的本地化问题。也许这已在 .NET 4.0 -> 4.5 中修复?

最佳答案

我认为问题出在星期几后面的逗号,如下所示:Help With .NET CookieContainer

关于c# - 当线程区域性不是英语时,.NET CookieException "Cookie format error"- 仅在某些环境中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15257004/

相关文章:

C# 日期时间比较问题

c# - 获取 url 的主要部分,包括虚拟目录

c# - 如何使用数据库检索日期设置raddatepicker日期

.Net Web 架构文献

c# - EF LINQ ToList 非常慢

c# - 反序列化 XML,如何访问属性?

c# - 在 Windows 8.1 上全新安装 Visual Studio 2013 后出现 ASP.NET MVC Razor 错误

c# - C# 中的 "Data Truncated"错误

javascript - 如何使用Jquery获取基于文本的特定超链接对象

c# - asp.net 的动画图表控件