Переменные сеанса и веб-службы
-
02-07-2019 - |
Вопрос
Я только что написал свой первый веб-сервис, поэтому давайте предположим, что моих знаний о веб-сервисах не существует.Я хочу попытаться вызвать функцию 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 шага:
- Используйте атрибут [WebMethod(EnableSession = true)] в методе.
- SESSION ["name"] = 50 (что вы хотите сохранить), пожалуйста, проверьте следующий пример.
[WebMethod(EnableSession = true)] public void saveName(string pname) { Session["Name"] = pname; }