【问题标题】:Cookie: ASP.NET SessionId IssueCookie:ASP.NET SessionId 问题
【发布时间】:2010-03-17 11:00:03
【问题描述】:

我有一个负载生成器,当从机器 A 到机器 B 进行 Soap 测试调用时,它会将 ASP.NET_SessionId 附加到 Cookie。

Cookie: ASP.NET_SessionId=gf0ouay24sdneiuicpiggn45;

但是,当我在本地服务器上运行 soap 测试时,cookie 中没有 ASP.NET_Session 变量。

为什么会这样?

更新:

我现在在服务器上遇到了这个问题:

请求的表单身份验证失败。原因:提供的票证无效。

我关注了这个:http://msmvps.com/blogs/omar/archive/2006/08/20/108307.aspx

但无济于事。

【问题讨论】:

  • 出于好奇,是电脑上安装了本地的IIS Server,还是Visual Studio内置的web server?
  • 不,它没有使用 Cassini。我有一个 IIS 服务器托管它。
  • 我不确定,但 cookie 名称是否允许有“.”?也许试试 ASPNET_SessionId=

标签: .net asp.net session cookies


【解决方案1】:

如果您使用内置的 ASP.NET 会话 ID,请确保您的 Web 应用程序没有在无 cookie 模式下运行。无会话页面不发送会话 ID cookie。

尝试显式修改本地服务器上的 web.config sessionState element 例如:

<sessionState mode="InProc" cookieless="false"

在 web.config 中明确设置将覆盖 machine.config 文件或其他 web.config 文件中的任何内容,以确保配置正确。你想试试这个的原因是因为MSDN states:

多个配置文件,全部 命名为 Web.config,可以出现在 多个目录[..] 每个 Web.config 文件将配置设置应用于 它自己的目录和所有子目录 目录 [..] 根配置 文件名为 systemroot\Microsoft.NET\Framework\versionNumber\CONFIG\Machine.config 提供 ASP.NET 配置 整个 Web 服务器的设置。

【讨论】:

    【解决方案2】:

    您使用的是 WCF 还是 ASMX?

    您是否监控过与 Fiddler 或 WireShark 的对话,以查看服务器端是否提供了 Set-Cookie 标头?

    【讨论】:

    • WCF... 是的,我用它来查看请求/响应是什么。跨服务器访问时,SessionId 会附加到 cookie 中。在本地进行测试时不会发送 sessionId...为什么???
    • Cookie 仅发送到设置它们的相同域。在您的本地设置中,您是否在期望看到来自客户端的 Cookie 标头之前看到来自服务器的 Set-Cookie 标头?如果是这样,Set-Cookie 标头是否正确形成?
    猜你喜欢
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2013-10-08
    相关资源
    最近更新 更多