如果你打开后台代码文件,将看到如下形式的代码:
- namespace WebUI
- {
- [ServiceContract(Namespace = "")]
- [AspNetCompatibilityRequirements(RequirementsMode =
- AspNetCompatibilityRequirementsMode.Allowed)]
- public class HelloWorldService
- {
- [OperationContract]
- public void DoWork()
- {
- return;
- }
- }
- }
VS 2008会自动为你在web.config文件中添加一些必要的配置,因此不需要手工在web.config文件中添加任何配置。现在,继续并添加一个HelloWorld()方法,该方法返回一个“HelloWorld”的字符串并为该方法添加一个[OperationContract]特性。在本篇文章的后面我们将解释该特性。
现在,为Web应用程序工程添加一个页面并命名它为“HelloWorldTest.aspx”。从Visual Studio工具箱中拖拽一个Script Manager项到页面上。在ScriptManager 标签内部,添加一个到该服务的引用。下面给出了该代码示例:
- <asp:ScriptManager ID="ScriptManager1" runat="server">
- <Services>
- <asp:ServiceReference Path="~/HelloWorldService.svc" />
- < SPAN>Services>
- < SPAN>asp:ScriptManager>
现在,添加一个button按钮和一个textbox文本框到页面上,并为该按钮添加点击事件处理程序,以使用JavaScript函数来调用服务。当你编写服务调用函数时,Visual Studio 2008 HTML编辑器将提供智能感知功能以方便编写必要的函数调用。完整的HTML代码如下所示:
- <form id="form1" runat="server">
- <div>
- <script language="javascript" type="text/javascript">
- function GetValueFromServer() {
- HelloWorldService.HelloWorld(onSuccess, onFailure);
- }
- function onSuccess(result) {
- document.getElementById('txtValueContainer').value = result;
- }
-
- function onFailure(result) {
- window.alert(result);
- }
- < SPAN>script>
- <asp:ScriptManager ID="ScriptManager1" runat="server">
- <Services>
- <asp:ServiceReference Path="~/HelloWorldService.svc" />
- < SPAN>Services>
- < SPAN>asp:ScriptManager>
- <input id="btnServiceCaller" type="button" value="Get Value"
- onclick="GetValueFromServer()"; />
- <input id="txtValueContainer" type="text" value="" />
- < SPAN>div>
- < SPAN>form>
注意,当调用服务时,我们传递了两个方法:一个用于进行回调而另一个用于错误回调。如果我们需要传递任何参数到该函数中,这些参数会首先传递进去然后再进行回调。
因此,如果我们有一个名为getvalue 的函数并接收两个字符串参数,那么我们将以[NameSpaceName].[ServiceName].getvalue(“value one”,”value two”,on_success,on_error);的方式调用该函数,此刻on_success和on_error各自表示回调和错误回调。