在.NET ASMX Web服务中获取会话

Mat*_*att 19 c# asp.net web-services session-state

我的ASP.NET Web应用程序旁边有一个ASMX Web服务.现在,我需要将用户会话放入Webservice.为了测试这个我做了这个简单的方法:

    [WebMethod(EnableSession = true)]
    public string checkSession()
    {
        return HttpContext.Current.Session["userid"].ToString();
    }
Run Code Online (Sandbox Code Playgroud)

所以,首先我登录我的网络应用程序,然后在浏览器中转到我的webservice并单击该自动生成的测试页面上的"checkSession".我在3台计算机上测试了这个.所有这3个都可以正常使用webapp(因此正在创建会话等),其中2个在调用webmethod时返回Session ["userid"]的值,但最后一台计算机返回"对象引用未设置为对象的实例"因为Session是null.

那么,这些计算机之间的区别是什么?为什么我的ASP.NET应用程序可以在所有计算机上获得会话但是webservice不能?

小智 9

也许现在为时已晚,但你试过这个:

[WebMethod(EnableSession = true)]
public string checkSession()
{
    return HttpContext.Current.Session.SessionID
}
Run Code Online (Sandbox Code Playgroud)

  • 这正是我需要知道的,它修复了我的空会话问题.我只是将[WebMethod(EnableSession = true)]放在我的方法上,该方法返回其他数据.谢谢! (2认同)