使用 HTTP POST 的 AJAX 服务

此示例演示如何使用 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 一起使用。有关将 ASP.NET AJAX 与 WCF 一起使用的示例,请参见 AJAX 示例

提示

此示例需要安装 .NET Framework 3.5 版才能生成和运行。若要打开项目和解决方案文件,需要使用 Visual Studio 2008。

提示

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

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

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

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

通过在服务配置文件中使用 <webHttpBinding> 标准绑定和 <enableWebScript> 行为在服务上创建 AJAX 终结点,就像在基本 AJAX 服务示例中一样。

与 GET 请求不同的是,不能从浏览器中调用 POST 服务。例如,定位到 https://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. 定位到 https://localhost/ServiceModelSamples/PostAjaxClientPage.aspx(不要在浏览器中从项目目录中打开 PostAjaxClientPage.aspx)。

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.