как обмениваться переменными сеанса или cookie между двумя веб-методами в веб-сервисах asp.net - PullRequest
1 голос
/ 15 сентября 2010

У меня есть два веб-метода. Я использовал переменную сеанса для обмена переменной имени пользователя между двумя веб-методами, но во втором веб-методе отображается нулевое значение. Можем ли мы использовать 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();
        ........
          .........
    }

1 Ответ

3 голосов
/ 16 сентября 2010

Отказ от ответственности: я думаю, что веб-сервис, который опирается на состояние сеанса, просто НЕПРАВИЛЬНО, так как веб-сервис должен быть без состояния.Однако:

На http://msdn.microsoft.com/en-us/library/aa480509.aspx вы можете прочитать о том, как использовать сеанс ASP.NET в веб-службе:

  1. . Убедитесь, что /configuration/system.web/Параметр sessionState в web.config настроен правильно, чтобы включить состояние сеанса
  2. . Убедитесь, что при использовании веб-службы имеется контейнер cookie, в котором можно сохранить файл cookie сеанса ASP.NET.Если клиент использует веб-браузер (например, вызов ajax), это обычно работает «из коробки», но если вы создаете автономный клиент, вам придется проделать дополнительную работу, см. Ссылку выше.

В общем: плохое дизайнерское решение дает вам больше работы, чем необходимо (извините за втирание).

Я думаю, вам следует переделать свой веб-сервис, чтобы вы всегдаотправьте имя пользователя и пароль во всех методах или добавьте метод входа, который дает клиенту токен, который отправляется с каждым запросом веб-службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...