在ASP.NET C中调用Web服务时,Session为null

时间:2012-03-22 20:35:34

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

我有一个Login类,它有一个函数:isCorrect(),它将用户名和密码作为两个属性和一个asp.net WebService来允许使用AJAX。

LoginService.cs

public Login CorrectLogin(string username, string password) 
{   
   Login thisLogin = Login.isCorrect(username, password);
   int thisLoggedinUserID = thisLogin.LoggedinUserID;

   if (thisLoggedinUserID != 0)
   {
      Session["loggedinUser"] = thisLoggedinUserID;
   }

   return thisLogin;
}

当我想设置Session["loggedinUser"] = thisLoggedinUserID的值时,会产生此错误:

Object reference not set to an instance of an object.

我无法理解什么是解决方案。

4 个答案:

答案 0 :(得分:29)

默认情况下,Web服务没有Session。将属性添加到WebMethod ..

 [WebMethod(EnableSession=true)]
 public Login CurrentLogin .....

答案 1 :(得分:1)

看起来Session对象为null。您确定会在应用程序中打开会话吗?

答案 2 :(得分:0)

这是一个关于登录和访问的好教程

http://www.mikesdotnetting.com/Article/75/Simple-Login-and-Redirect-for-ASP.NET-and-Access

不难找到,我想你自己的提供者。 codeplex等也有一堆。

答案 3 :(得分:0)

会话在Web服务c#中不能很好地工作。几个月前,我会像你一样做,但我改变了系统。现在我正在使用令牌识别(使用持久层):首先你必须登录,每次你打电话,你必须在一个参数或肥皂头或类似的东西中发送令牌。我建议始终使用SSL。

另一种选择是在SOAPHeader中使用登录名和密码识别每个Web服务调用,并使用SOAPExtension来验证或不是用户调用。此方法仅对SOAP协议通信有效,而不适用于HTTP POST或HTTP GET。

希望这有帮助。