среда, 24 февраля 2010 г.

Как получить параметры строки запроса в веб сервисе

Бывают ситуации, когда вы дергаете сервис с клиентской части и хотите сделать какие то вычисления учитывая параметры строки запроса, но в Request.QueryString всегда пусто.

Допустим у вас есть следующий функционал: вы можете выбрать страницу и добавить на неё какие-то виджеты. Страница будет выглядеть так - Navigation.aspx?PageId=123. На странице будет js функция, которая дергает сервис для добавления выбранного виджета.

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class WidgetService : WebService
{
    [WebMethod]
    public int AddWidget(int widgetId)
    {
        NameValueCollection request = HttpUtility.ParseQueryString(this.Context.Request.UrlReferrer.Query);
        int pageId = int.Parse(request["PageId"]);

        int widgetInstanceId = AddWidgetInternal(widgetId, pageId);

        return widgetInstanceId;
    }
}

Решение находится в строке #8. Чтоб получить строку запроса, её можно получить у страницы, с которой был вызван сервис.

Комментариев нет:

Отправить комментарий