使用 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 服务要求在消息正文中以 JSON 格式发送 n1n2 参数,而不是在 URL 中发送。

客户端网页PostAjaxClientPage.aspx包含 ASP.NET 代码,每当用户单击页面上的某个作按钮时,调用服务。 该服务使用 GET 请求以与 基本 AJAX 服务 示例中相同的方式进行响应。

设置、生成和运行示例

  1. 确保您执行Windows Communication Foundation 示例One-Time 安装说明的安装过程。

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

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