我有一个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.
我无法理解什么是解决方案。
答案 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。
希望这有帮助。