前两天,工作中遇到需要开发一个简单的webservice
网上搜索了不少文章,可是讲的很全面的还真是不多。特别是远程调用的例子,好难找。
所以自己搞定了之后,决定写一篇博客,从开发,配置到远程调用,一步步写个例子,供参考。
1,开发。
打开Visual studio.net 2008, 新建项目,选择ASP.NET WebService,给它起名WebServiceSample
系统自动生成一个helloworld
public string HelloWorld()
{
return "Hello World";
}
前面的标示“[WebMethod]”即表示这个方法可以远程调用。
只有public 的函数可以标示为“[WebMethod]”.
下面我们自己写一个简单的加法函数:
现在按“调试”按钮,出现一个对话框,直接按enter,出现一张网页,上方有两个链接,分别是HelloWorld和MyAdd
点选MyAdd进入,可以看到一个调试器,在其中输入i和j的参数,就可以调试MyAdd这个函数啦。
要留意的是,这边调试成功的话,在IIS中调试还是有可能会因为各种原因失败,因为本机调试和远程调试,许多方面是不同的,比如对本地文件的访问权限等。
远程调试的时候,WebService和一般的ASP.Net网站一样,用户只能访问wwwroot下面的文件哦。
这张页面下方,有远程调用本WebService的三种方法和各自的返回语句。
这三种方法调用的时候只是将发送和接受的内容加以改变而已。微软推荐的方法是上面两种。
至此,一个最简单的WebService开发完成
2,配置
最最简单的配置方法:
把开发目录下的Web.Config,Service1.asmx,bin目录(只需要copy下面的WebServiceSample.dll)copy到C:\INetPub\WWWRoot\文件夹下。
如果本机的IIS服务没有安装或者启用的话,在控制面板里安装或者启用IIS服务。
如果在浏览器中输入http://localhost/service1.asmx会出现刚才调试的时候出现的页面的话,就说明配置成功啦。
3,远程调用
本机调用当然不算远程啦。但是我这边远程调用是为了区别直接调用dll说的,使用http方式的调用。其实使用http方式调用,不管是在本机上访问localhost还是在别的机器上访问本机的ip地址,都是一样的。
在调试页面,有三种调用方法的示例,下面我门以第三种方法为例子展示一下调用代码。
POST /Service1.asmx/MyAdd HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: length
i=string&j=string
接收:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<int xmlns="http://tempuri.org/">int</int>
代码如下:
要用另外两种方法调用的话,要自己生成XML文本,还有要修改Content-Type的值。