ComplexTypeAjaxService 示例演示如何使用 Windows Communication Foundation (WCF) 创建 ASP.NET 异步 JavaScript 和 XML (AJAX) 服务,该服务创建复杂类型的实例,并将其作为 JavaScript 对象表示法(JSON)在服务和客户端之间发送。 可以从 Web 浏览器客户端使用 JavaScript 代码访问 AJAX 服务。 此示例基于 基本 AJAX 服务 示例生成。
WCF 中的 AJAX 支持经过优化,通过 ScriptManager 控件与 ASP.NET AJAX 一起使用。 有关将 WCF 与 ASP.NET AJAX 配合使用的示例,请参阅 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;
}
使用 WebScriptServiceHostFactory,在服务上创建 AJAX 终结点,就像在基本 AJAX 服务示例中一样。
客户端网页ComplexTypeClientPage.aspx包含 ASP.NET 和 JavaScript 代码,当用户单击页面上的 “执行计算 ”按钮时调用该服务。 调用服务的代码构造 JSON 正文,并使用 HTTP POST 发送它,类似于 使用 HTTP POST 的 AJAX 服务 示例。
服务调用成功后,可以访问生成的 JavaScript 对象上的单个数据成员(sumdifferenceproduct和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 示例 执行One-Time 安装过程。
生成解决方案ComplexTypeAjaxService.sln,如 生成 Windows Communication Foundation 示例中所述。
导航到
http://localhost/ServiceModelSamples/ComplexTypeClientPage.aspx(不要在浏览器中从项目目录打开 ComplexTypeClientPage.aspx)。