Services用来管理对WebService的调用,通过<asp:ServiceReference>标签可以在Services中注册一个WebService,在运行时ScriptManager将为每一个ServiceReference对象生成一个客户端代理,<asp:ServiceReference>标签一个很重要的属性是Path,用来指定WebService的路径,如下所示:

<
asp:ScriptManager?
ID
="SM1"
?runat
="server"
>


????
Services


????????
asp:ServiceReference?
Path
="Service.asmx"
/>
</


asp:ScriptManager
>
看一个简单的调用WebService的例子:
WebService如下,注意在WebServiceSample上加ScriptService特性:
[ScriptService]



public
?
class
?WebServiceSample?:?System.Web.Services.WebService?

{


????public?WebServiceSample()



????
{


????????//Uncomment?the?following?line?if?using?designed?components?


????????InitializeComponent();?


????}



????[WebMethod]


?????string?EchoString(String?s)



????
{

????????return"Hello?+?s;

????}


}
ASPX页面:


<%

@?Page?Language="C#?AutoEventWireuptrue?CodeFileDefault3.aspx.cs?InheritsDefault3?
%>
html?
xmlns
="http://www.w3.org/1999/xhtml"
head?
runat
title
Untitled?Page
head



script?
type
="text/javascript"
?language
="JavaScript"
>



????function?OnbuttonGo_click()?



????
{

????????requestSimpleService??WebServiceSample.EchoString(


????????????document.getElementById('inputName').value,???????//params


????????????OnRequestComplete????Complete?event

????????????);


????????return?false;

????}?OnRequestComplete(result)?



????
{

????????alert(result);

????}


script
body
form?
id
="form1"
="ScriptManager1"


????????????
="WebServiceSample.asmx"
div
input?
="text"
?id
="inputName"
?size
=20
="button"
?type
?value
="调?用"
?onclick
="return?OnbuttonGo_click()"
/></
form
html
>
运行后效果如下:

当然了也可以在运行时动态的在Services中加入ServiceReference,下面看一个运行时动态加入ServiceReference的例子:



>

void?Page_Load(object?sender,?EventArgs?e)



????
{


????????ServiceReference?sr?new?ServiceReference();


????????sr.Path?WebServiceSample.asmx;


????????ScriptManager1.Services.Add(sr);


????}



>

?OnbuttonGo_click()?



????
{


????????requestSimpleService?;


????}


?


?????OnRequestComplete(result)?



????
{


????????alert(result);


????}


?




????


????
>
可以看到运行后和在ScriptManager中直接加入的效果是一样的。
