此示例演示如何使用 Windows Communication Foundation (WCF) 来创建 ASP.NET 异步 JavaScript 和 XML (AJAX) 服务,此服务创建复杂类型的实例并将这些实例作为 JavaScript 对象表示法 (JSON) 在服务和客户端之间发送。可以从 Web 浏览器客户端使用 JavaScript 代码来访问 AJAX 服务。此示例是基于基本 AJAX 服务示例生成的。
提示
此示例需要安装 .NET Framework 3.5 版才能生成和运行。若要打开项目和解决方案文件,需要使用 Visual Studio 2008。
WCF 中的 AJAX 支持经过了优化,以便可以通过 ScriptManager 控件与 ASP.NET AJAX 一起使用。有关将 ASP.NET AJAX 与 WCF 一起使用的示例,请参见 AJAX 示例。
提示
本主题的末尾介绍了此示例的设置过程和生成说明。
以下示例中的服务是不包含 AJAX 特定代码的 WCF 服务。由于未应用 WebGetAttribute 属性,因此将使用默认的 HTTP 谓词(“POST”)。该服务有一个操作 DoMath
,该操作返回一个名为 MathResult
的复杂类型。该复杂类型是标准的数据协定类型,也不包含特定于 AJAX 的代码。
[DataContract]
public class MathResult
{
[DataMember]
public double sum;
[DataMember]
public double difference;
[DataMember]
public double product;
[DataMember]
public double quotient;
}
可以通过在服务配置中使用 WebHttpBinding 标准绑定和 <enableWebScript> 行为来在服务上创建 AJAX 终结点,这与基本 AJAX 服务示例相似。
客户端网页 ComplexTypeClientPage.aspx 包含 ASP.NET 和 JavaScript 代码,当用户在页面上单击**“Perform calculation”(执行计算)**按钮时,该代码会调用相应的服务。这个用来调用服务的代码会构造 JSON 正文并使用 HTTP POST 发送它,这与使用 HTTP POST 的 AJAX 服务示例相似。
在服务调用成功之后,您可以在所得到的 JavaScript 对象上访问各个数据成员(sum
、difference
、product
和 quotient
)。
function onSuccess(mathResult){
document.getElementById("sum").value = mathResult.sum;
document.getElementById("difference").value = mathResult.difference;
document.getElementById("product").value = mathResult.product;
document.getElementById("quotient").value = mathResult.quotient;
}
设置、生成和运行示例
按照生成 Windows Communication Foundation 示例中的说明生成解决方案 ComplexTypeAjaxService.sln。
定位到 https://localhost/ServiceModelSamples/ComplexTypeClientPage.aspx(不要在浏览器中从项目目录中打开 ComplexTypeClientPage.aspx)。
另请参见
任务
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.