Я только что написал свой первый веб-сервис, поэтому давайте предположим, что мое знание веб-службы не существует. Я хочу попытаться вызвать функцию 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; }