Вопрос

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

Это было полезно?

Решение

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

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

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

Метро.

Другие советы

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

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

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

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

Может быть, это будет работать httpcontext.current.session ["name], иначе вам, возможно, придется принять некоторые параметры или сохранить их в базе данных

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

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

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

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

 }  

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top