为什么这个cookie有时会为空?

时间:2014-05-01 18:25:03

标签: c# asp.net silverlight

我有一个非常奇怪的问题,几周来一直给我带来麻烦。我有一个ASP.NET页面,可以从cookie中获取值

string SessionKey = Request.Cookies["SessionKey"].Value;

Cookie本身是在同一服务器上运行的silverlight应用程序中设置的,使用我在SO上找到的一个小帮助方法。

public static void SetCookie(string key, string value)
{
   DateTime expiration = DateTime.UtcNow + TimeSpan.FromDays(5);
   string cookie = String.Format("{0}={1};expires={2}", key, value, expiration.ToString("R"));
   HtmlPage.Document.SetProperty("cookie", cookie);
}

所以这就是问题所在。我有三台电脑。这三个都在不同的位置(房子,办公室,不同的办公室)。一个是在其上托管整个Web应用程序的开发机器。第二个是Web服务器,其中包含在IIS中运行的Web应用程序的副本。第三个是办公室里的普通计算机。

在dev机器上,针对自己的localhost开发环境进行测试,这样可以正常运行,而cookie就是我所期望的。

在开发机器上,与服务器通信,它也可以正常工作。 cookie应该是它应该是等等。

第三台普通计算机,当我连接到服务器时,我有一个空cookie。不起作用!

但是在第三台普通计算机上,当我连接到开发机器时(我公开面对它进行测试),它运行正常并填充了cookie。

这三台机器都在完全独立的网络上。

这个问题并不局限于第三台机器,有许多机器,当它们与服务器通信时,cookie不起作用,但如果它们试图查看我的开发设置,它确实有效。即使是陌生人,也时不时地工作,但非常不一致。会有什么想法导致这个?

1 个答案:

答案 0 :(得分:0)

要检查的事项

  • Cookie路径,只需将其添加为" {0} = {1}; expires = {2}; path = /;"
  • 如果服务器名称只有字母数字字符(没有下划线或其他特殊字符);尝试使用IP地址而不是域名/服务器名称,反之亦然
  • 如果可以从test aspx-page
  • 设置cookie

您可以使用Fiddler来了解您是否可以更深入地了解这一点。