C# 下 WebService 初探: 构建Web Service 服务及 WinForm和浏览器 http-get调用
在 Visual Studio 下构建 Web Service 服务非常简单, 只需: 添加新的项目--> ASP.NET Web 服务应用程序,即可生成一个 WebService, 并有一个默认的 不带参数的 Helloworld web方法, 也可自己添加一个带参数的方法, 如下:
[WebMethod]
public string SayHello(string name)
{
return String.Format("Hi, {0}!", name);
}
生成的是一个 .dll 文件; 也可以将 Service.asmx 发布到 IIS中去.
(一) WinForm 中调用 WebService.
1. 添加一个新的项目: Windows窗体应用程序;
2. 应用 --> 添加应用, 找到上面生成的 WebService 应用程序文件(.dll), 添加当前应用程序的应用中.
3. 添加引用 WebSerice 的命名空间, 比如 : using MyWebService;
4. 测试调用web service 的效果: 在窗体上设置 2个 Button, 设置Click事件:
private void button1_Click(object sender, EventArgs e) { MyWebService.Service1 localService = new Service1(); MessageBox.Show(localService.HelloWorld()); } private void button2_Click(object sender, EventArgs e) { MyWebService.Service1 localService = new Service1(); string response = localService.SayHello("Tom"); MessageBox.Show(response); }
即可.
(二) 浏览器下使用 Http-Get 直接调用 WebService, 即在浏览器下地址栏这样调用:
http://DomainName/Service1.asmx/SayHello?name="Jick"
默认情况下, 处于安全考虑, .net 2.0 以上不支持这种协议调用. 若要这样做, 则需要修改 web.config 配置文件, 如下增加设置项:
<webServices>
<protocols>
<add name="HttpGet"/>
<add name ="HttpPost"/>
</protocols>
</webServices>
这个必须放在<system.web> ... </system.web> 区段里的.
当 web服务发布时 web.config 是一起发布出去的.
打开浏览器, 在地址栏输入: http://127.0.0.1/Service1.asmx/SayHello?Name="dfasfas"
其中方法名 SayHello 大小写是敏感的, 参数名不区分大小写, 但名称必须与原方法定义中是一样的.
即可获得如下 xml 信息: