如何在asp.net webservices中的两个web方法之间交换会话或cookie变量

时间:2010-09-15 12:10:40

标签: c# asp.net web-services session cookies

我有两个webmethod我使用会话变量来交换两个webmethod之间的用户名变量,但是它在第二个webmethod中显示null,我们可以使用cookie作为会话的替代来存储和检索用户名

[WebMethod(EnableSession = true)]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public bool SubmitList1(string username )
    {
       Session["User_Name"] = username;
      .........
        .......

     }
[WebMethod(EnableSession = true)]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public bool addresslisting( string keyword)
    {

       string username = Context.Session["User_Name"].ToString();
        ........
          .........
    }

1 个答案:

答案 0 :(得分:3)

免责声明:我认为依赖于Session状态的Web服务只是简单错误,因为Web服务应该是无状态的。但是:

http://msdn.microsoft.com/en-us/library/aa480509.aspx,您可以阅读有关如何在Web服务中使用ASP.NET Session的信息:

  1. 确保正确配置web.config中的/configuration/system.web/sessionState以启用会话状态
  2. 确保使用Web服务有一个cookie容器,可以存储ASP.NET会话cookie。如果客户端来自Web浏览器(例如ajax调用),这通常是开箱即用的,但如果您要构建独立客户端,则需要做更多工作,请参阅上面的链接。
  3. 总而言之:一个糟糕的设计决定会给你带来超出必要的工作量(抱歉揉搓它)。

    我认为您应该重新设计您的Web服务,以便始终在所有方法中发送用户名和密码,或者添加一个登录方法,为客户端提供随每个Web服务请求一起发送的令牌。