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 信息:

  <?xml version="1.0" encoding="utf-8" ?>
  <string xmlns="http://tempuri.org/">Hi, "dfasfas"!</string>
 
  当然这种显示结果 UI 体验是不友好的, 是给开发者用于获取 xml 数据的.
  这就是对 Web Service 的一个初步了解吧.
posted @ 2011-08-17 16:39  沧海小小粟  阅读(2327)  评论(0编辑  收藏  举报