使用 HTTP POST 的 AJAX 服务

PostAjaxService 示例演示如何使用 Windows Communication Foundation (WCF) 创建使用 HTTP POST 的 ASP.NET 异步 JavaScript 和 XML (AJAX) 服务。 AJAX 服务是指可以从 Web 浏览器客户端使用基本 JavaScript 代码访问的服务。 此示例是基于基本 AJAX 服务示例生成的;这两种示例之间的唯一区别在于使用 HTTP POST,而非 HTTP GET。

Windows Communication Foundation (WCF) 对 AJAX 支持进行了优化,以便通过 ScriptManager 控件与 ASP.NET AJAX 一起使用。 有关将 WCF 与 ASP.NET AJAX 一起使用的示例,请参阅 Ajax 示例

注意

本主题的最后介绍了此示例的设置过程和生成说明。

以下示例中的服务是不包含 AJAX 特定代码的 WCF 服务。

如果 WebInvokeAttribute 属性应用于某个操作,或者未应用 WebGetAttribute 属性,将使用默认的 HTTP 谓词(“POST”)。 POST 请求虽然比 GET 请求更难构造,但它们不会被缓存;当不适宜缓存时,应对所有操作使用 POST 请求。

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

通过使用 WebScriptServiceHostFactory 在服务上创建 AJAX 终结点,就像在基本 AJAX 服务示例中一样。

与 GET 请求不同的是,不能从浏览器中调用 POST 服务。 例如,导航到 http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200 将导致出错,因为 POST 服务要求在消息正文中(而不是在 URL 中)采用 JSON 格式发送 n1n2 参数。

客户端网页 PostAjaxClientPage.aspx 包含 ASP.NET 代码以便在用户单击页面上的操作按钮之一时调用服务。 服务的响应方式与基本 AJAX 服务示例中的 GET 请求相同。

设置、生成和运行示例

  1. 请确保执行 Windows Communication Foundation 示例的一次性安装过程中的安装说明。

  2. 按照生成 Windows Communication Foundation 示例中所述生成解决方案 PostAjaxService.sln。

  3. 导航到 http://localhost/ServiceModelSamples/PostAjaxClientPage.aspx(不要在浏览器中从项目目录打开 PostAjaxClientPage.aspx)。