Переменные сеанса и веб-службы - PullRequest
10 голосов
/ 26 сентября 2008

Я только что написал свой первый веб-сервис, поэтому давайте предположим, что мой веб-сервис не существует. Я хочу попробовать вызвать функцию dbClass из веб-службы. Однако мне нужны некоторые параметры, которые есть в сессии. Есть ли способ, как я могу получить эти вызов эти переменные сеанса из веб-службы ??

Ответы [ 7 ]

20 голосов
/ 26 сентября 2008

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

[WebMethod(EnableSession = true)]
public void MyWebService()
{
    Foo foo;
    Session["MyObjectName"] = new Foo();
    foo = Session["MyObjectName"] as Foo;
}

Как только вы это сделаете, вы можете получить доступ к объектам сеанса, подобным aspx.

Metro.

5 голосов
/ 26 сентября 2008

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

3 голосов
/ 26 сентября 2008

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

1 голос
/ 06 марта 2012

, если вам нужно Session ["username"]. ToString (); как и на других страницах C # позади aspx, вам следует просто заменить [WebMethod] над методом WebService на [WebMethod (EnableSession = true)]

спасибо :) Метро

0 голосов
/ 16 мая 2017

Чтобы использовать сессию в веб-сервисе, мы должны выполнить 2 шага -

  1. Используйте метод [WebMethod (EnableSession = true)] для метода.
  2. Session ["Name"] = 50 (что вы хотите сохранить) Пожалуйста, проверьте следующий пример.
[WebMethod(EnableSession = true)]  
public void saveName(string pname)  
{  
   Session["Name"] = pname;  

 }  

0 голосов
/ 26 сентября 2008

Ваш вопрос немного расплывчат, но я постараюсь ответить как можно лучше.

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

0 голосов
/ 26 сентября 2008

Может быть, это будет работать HttpContext.Current.Session ["Name] Или же вам может потребоваться принять некоторые параметры или сохранить их в базе данных

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