Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)qq
published in(发表于) 2014/7/11 9:23:27
C#教程:创建Web服务

C#教程:创建Web服务

创建Web服务

创建Web服务的步骤如下所示。

(1)在ASP.NET 2005中创建Web服务和创建类很相似,其过程包括声明一个Web服务和定义一个Web服务接口方法。新建一个名为MrWebService的项目,在Visual Studio 2005开发环境中,选择“文件”/“新建”/“网站”选项,弹出“新建网站”对话框,在该对话框中选择“ASP.NET Web服务”选项,并命名为“mrWebService”,如图1所示。



图1 创建ASP.NET Web服务

(2)单击【确定】按钮,项目创建成功,并在“解决方案资源管理器”窗口中显示一个以.cs为扩展名的文件,如图2所示和一个以.asmx为扩展名的Web服务文件,如图3所示。在Web服务文件中包含一条“@Webservice”指令。Web服务至少由一个类组成,该类可以写在同一个.asmx文件中,也可以采用“Code Behind”(代码分离)方法,并通过“@WebService”指令引入。

(3)在“解决方案资源管理器”窗口中,双击“App_Code”文件夹下的Service.cs文件,进入其代码视图。Service.cs文件代码如下:



图2 以.cs结尾文件



图3 以.asmx结尾文件

using System;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class Service : System.Web.Services.WebService

{

public Service () {

}

[WebMethod]

public string HelloWorld() {

return "Hello World";

}

}

(4)在上述代码中,系统自带一个HelloWorld方法,此方法返回一个字符串。下面新建两个自定义方法:Add方法和Ascii方法,其中Add方法用来实现两数相加的功能,而Ascii方法用来实现返回字符的ASCII值功能。

Add方法和Ascii方法关键代码如下:

[WebMethod(Description="第一个测试函数,返回两个数的和")]

public int Add(int num1, int num2)

{

return num1 + num2;

}

[WebMethod(Description="第二个测试函数,返回字符ASCII")]

public char Ascii(string strAscII)

{

return Char.Parse(strAscII);

}

(5)设置WebMethod属性。

如果某一个成员函数能被外部调用,则必须满足两个条件:第一,该成员函数为public类型;第二,该成员函数必须具有“[Webmethod]”关键字修饰,因为只有具备了“[WebMethod]”的类,才可以通过SOAP被远程访问。如果要使某方法可以被Web服务调用,在其前面加上“[WebMethod]”属性即可。例如,下面代码中的HelloWorld方法、Add方法和Ascii方法都可以使用Web服务进行调用,而sub方法不能被调用。代码如下:

[WebMethod]

public string HelloWorld() {

return "Hello World";

}

[WebMethod(Description="第一个测试函数,返回两个数的和")]

public int Add(int num1, int num2)

{

return num1 + num2;

}

[WebMethod(Description="第二个测试函数,返回字符ASCII")]

public char Ascii(string strAscII)

{

return Char.Parse(strAscII);

}

public int sub(int num1,int num2)

{

return num1 * num2;

}

上面所建的Web服务的运行结果如图4所示。如图4所示,由于sub方法前面没有“[WebMethod]”属性,所以Web服务中没有,它也不能被远程访问。

WebMethod属性中可以指定的节及说明如表1所示。



图4 WebMethod属性效果



表1 WebMethod属性节




If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759