我有两个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();
........
.........
}
答案 0 :(得分:3)
免责声明:我认为依赖于Session状态的Web服务只是简单错误,因为Web服务应该是无状态的。但是:
在http://msdn.microsoft.com/en-us/library/aa480509.aspx,您可以阅读有关如何在Web服务中使用ASP.NET Session的信息:
总而言之:一个糟糕的设计决定会给你带来超出必要的工作量(抱歉揉搓它)。
我认为您应该重新设计您的Web服务,以便始终在所有方法中发送用户名和密码,或者添加一个登录方法,为客户端提供随每个Web服务请求一起发送的令牌。