Подтвердить что ты не робот

Сессия имеет значение null при вызове веб-службы в ASP.NET С#

У меня есть класс входа, у которого есть функция: 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.

Я не могу понять, что такое решение.

4b9b3361

Ответ 1

Веб-службы по умолчанию не имеют сеанса. Добавить атрибут в WebMethod..

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

Ответ 2

Похоже, что объект Session имеет значение null. Вы уверены, что сеансы включены в ваше приложение?

Ответ 4

Сессии в Web-сервисах С# не работают. Несколько месяцев назад я сделал бы то же самое, что и вы, но я меняю систему. Теперь я использую идентификацию маркера (используя уровень персистентности): сначала вы должны войти в систему, и каждый раз, когда вы совершаете вызов, вы должны отправить токен в один параметр или заголовок мыла или что-то вроде этого. Я рекомендую использовать SSL всегда.

Другой вариант - идентифицировать каждый вызов веб-службы с логином и паролем в SOAPHeader и использовать SOAPExtension для аутентификации или не вызова пользователя. Этот метод действителен только для связи протокола SOAP, а не HTTP POST или HTTP GET.

Надеюсь, что это поможет.