Поделиться через


Служба AJAX с помощью HTTP POST

В примере PostAjaxService показано, как использовать Windows Communication Foundation (WCF) для создания ASP.NET асинхронной службы JavaScript и XML (AJAX), которая использует HTTP POST. Служба AJAX — это служба, доступ к которому можно получить с помощью базового кода JavaScript из клиента веб-браузера. Этот пример основан на примере службы BASIC AJAX ; Единственное различие между двумя примерами — использование HTTP POST вместо HTTP GET.

Поддержка AJAX в Windows Communication Foundation (WCF) оптимизирована для использования с ASP.NET AJAX с помощью ScriptManager элемента управления. Пример использования WCF с ASP.NET AJAX см. в примерах Ajax.

Замечание

Процедура установки и инструкции по сборке для этого примера находятся в конце этого раздела.

Служба в следующем примере — это служба WCF без кода AJAX.

WebInvokeAttribute Если атрибут применяется к операции или WebGetAttribute атрибут не применяется, используется глагол HTTP по умолчанию ("POST"). Запросы POST сложнее создавать, чем запросы GET, но они не кэшируются; используйте запросы POST для всех операций, в которых кэширование не подходит.

[ServiceContract(Namespace = "PostAjaxService")]
public interface ICalculator
{
    [WebInvoke]
    double Add(double n1, double n2);
    //Other operations omitted…
}

Создайте конечную точку AJAX в службе с помощью WebScriptServiceHostFactory, аналогично тому, как это сделано в примере базовой службы AJAX.

В отличие от запросов GET, нельзя вызывать службы POST из браузера. Например, переход к http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200 приводит к ошибке, так как служба POST ожидает, что параметры n1 и n2 будут отправлены в теле сообщения в формате JSON, а не в URL-адресе.

Веб-страница клиента PostAjaxClientPage.aspx содержит код ASP.NET, чтобы вызвать службу всякий раз, когда пользователь щелкает одну из кнопок операции на странице. Служба реагирует так же, как и в примере службы BASIC AJAX , с запросом GET.

Настройка, сборка и запуск примера

  1. Убедитесь, что вы выполняете инструкции по настройке One-Time в процедуре настройки для образцов Windows Communication Foundation.

  2. Создайте решение PostAjaxService.sln, как описано в разделе "Создание примеров Windows Communication Foundation".

  3. Перейдите к http://localhost/ServiceModelSamples/PostAjaxClientPage.aspx (не открывайте PostAjaxClientPage.aspx в браузере из каталога проекта).