基本 AJAX 服务

本示例演示如何使用 Windows Communication Foundation (WCF) 创建基本的 ASP.NET 异步 JavaScript 和 XML (AJAX) 服务(通过从 Web 浏览器客户端使用 JavaScript 代码可以访问的服务)。该服务使用 WebGetAttribute 属性以确保服务响应 HTTP GET 请求并被配置为对响应使用 JavaScript 对象表示法 (JSON) 数据格式。

WCF 对 AJAX 的支持经过了优化,以便通过 ScriptManager 控件与 ASP.NET AJAX 一起使用。有关将 ASP.NET AJAX 与 WCF 一起使用的示例,请参见 AJAX 示例

提示

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

提示

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

在下面的代码中,将 WebGetAttribute 属性应用于 Add 操作以确保服务响应 HTTP GET 请求。为了简单起见,该代码使用 GET(您可以从任何 Web 浏览器构造 HTTP GET 请求)。也可以使用 GET 来启用缓存。在缺少 WebGetAttribute 属性时,HTTP POST 是默认属性。

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

通过在服务配置文件中使用 <webHttpBinding> 标准绑定和 <enableWebScript> 行为,可以在服务上创建 AJAX 终结点。

<system.serviceModel>
    <behaviors>
        <endpointBehaviors>
            <behavior name="Microsoft.Ajax.Samples.CalculatorServiceAspNetAjaxBehavior">
                <enableWebScript />
            </behavior>
        </endpointBehaviors>
    </behaviors>
    <services>
        <service name="Microsoft.Ajax.Samples.CalculatorService">
            <endpoint address=" "
                behaviorConfiguration="Microsoft.Ajax.Samples.CalculatorServiceAspNetAjaxBehavior" 
                binding="webHttpBinding"
                contract="Microsoft.Ajax.Samples.ICalculator" />
        </service>
    </services>
</system.serviceModel>

enableWebScript 行为将服务的默认数据格式设置为 JSON 而不是 XML。若要调用服务,请在完成本主题后面的设置和生成步骤后定位到 https://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200。这个测试功能是通过使用 HTTP GET 请求实现的。

客户端 Web 页 SimpleAjaxClientPage.aspx 包含 ASP.NET 代码,无论何时用户单击该页面上的操作按钮之一,就能调用服务。ScriptManager 控件用于使服务的代理可以通过 JavaScript 访问。

<asp:ScriptManager ID="ScriptManager" runat="server">
     <Services>
          <asp:ServiceReference Path="service.svc" />
     </Services>
</asp:ScriptManager>

使用以下 JavaScript 代码实例化本地代理和调用操作。

// Code for extracting arguments n1 and n2 omitted…
// Instantiate a service proxy
var proxy = new SimpleAjaxService.ICalculator();
// Code for selecting operation omitted…
proxy.Add(parseFloat(n1), parseFloat(n2), onSuccess, onFail, null);

如果服务调用成功,则代码调用 onSuccess 处理程序并在文本框中显示操作结果。

function onSuccess(mathResult){
     document.getElementById("result").value = mathResult;
}

设置、生成和运行示例

  1. 确保按照 Windows Communication Foundation 示例的一次性安装过程中的设置说明进行操作。

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

  3. 定位到 https://localhost/ServiceModelSamples/SimpleAjaxClientPage.aspx(不要在浏览器中从项目目录中打开 SimpleAjaxClientPage.aspx)。

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