这就是一个普通的Web Service,没有任何不一样之处。注意,不要忘记为SayHello()方法添加[WebMethod]属性,这是每个Web方法都必需的。
为了让ASP.NET AJAX生成该Web Service的客户端异步调用代理,进而允许我们在JavaScript代码中直接调用该方法,我们还要再为SimpleWebService类添加 [ScriptService]属性,这一部分才是ASP.NET AJAX为Web Service提供的附加功能(注意代码中粗体部分):
//…………
[ScriptService]
//…………
public class SimpleWebService : System.Web.Services.WebService
{
//…………
}
我们也可以直接为需要暴露给客户端的Web Service方法添加[ScriptService]属性,而不必将其添加到Web Service类上。
[ScriptService]属性位于System.Web.Script.Services命名空间中,如果需要的话,还要添加如下的using语句:
using System.Web.Script.Services;
下面列出完整的SimpleWebService Web Service代码,注意其中粗体部分:
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Script.Services;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class SimpleWebService : System.Web.Services.WebService
{
[WebMethod]
public string SayHello(string name)
{
return string.Format("Hello {0}!", name);
}
}
完成了Web Service编写之后,我们来先行测试一下——开发过程中不断地进行阶段性测试有助于尽快发现潜在的问题,并将其扼杀在萌芽中。如果一切顺利的话,那么测试该Web Service时可以看到如图3-3所示的结果。

图3-3 测试Web Service时的界面