Переменные сеанса и веб-службы

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

Ответ 1

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

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

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

Metro.

Ответ 2

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

Ответ 3

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

Ответ 4

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

благодаря:) Metro

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

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

 }