﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-GLORY | 学习·记录-随笔分类-.NET</title><link>http://www.cppblog.com/meglory/category/16292.html</link><description>coding for life</description><language>zh-cn</language><lastBuildDate>Mon, 16 May 2011 14:52:04 GMT</lastBuildDate><pubDate>Mon, 16 May 2011 14:52:04 GMT</pubDate><ttl>60</ttl><item><title>[问题解决]System.UnauthorizedAccessException: 对路径“”的访问被拒绝。</title><link>http://www.cppblog.com/meglory/archive/2011/05/16/146464.html</link><dc:creator>meglory</dc:creator><author>meglory</author><pubDate>Mon, 16 May 2011 03:20:00 GMT</pubDate><guid>http://www.cppblog.com/meglory/archive/2011/05/16/146464.html</guid><wfw:comment>http://www.cppblog.com/meglory/comments/146464.html</wfw:comment><comments>http://www.cppblog.com/meglory/archive/2011/05/16/146464.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/meglory/comments/commentRss/146464.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/meglory/services/trackbacks/146464.html</trackback:ping><description><![CDATA[<p>ASP.NET<br><br>通过BS结构向ftp上传文件的时候，出现权限错误，不能创建文件。<br><br>搜索了半天之后，该文件夹权限，更改servu设置，都无济于事。<br><br>最终还是这个办法解决了问题：<br><br><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: verdana, sans-serif; FONT-SIZE: 14px" class=Apple-style-span></p>
<p style="PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">要将 ASP.NET 访问权限授予某个文件，请在资源管理器中右击该文件，选择&#8220;属性&#8221;，然后选择&#8220;安全&#8221;选项卡。单击&#8220;添加&#8221;添加适当的用户或组。突出显示 ASP.NET 帐户，选中所需访问权限对应的框。<br>在 Web.Config 中添加如下代码,就OK了</p>
<p style="PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&lt;authentication mode="Windows"/&gt;<br>&lt;identity impersonate="true" userName="用户名" password="密码"/&gt;&nbsp;&nbsp; //添加这句</p>
<p></span></span><br>&nbsp;</p>
<img src ="http://www.cppblog.com/meglory/aggbug/146464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/meglory/" target="_blank">meglory</a> 2011-05-16 11:20 <a href="http://www.cppblog.com/meglory/archive/2011/05/16/146464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载：Web Service入门文章</title><link>http://www.cppblog.com/meglory/archive/2011/03/16/141996.html</link><dc:creator>meglory</dc:creator><author>meglory</author><pubDate>Wed, 16 Mar 2011 09:31:00 GMT</pubDate><guid>http://www.cppblog.com/meglory/archive/2011/03/16/141996.html</guid><wfw:comment>http://www.cppblog.com/meglory/comments/141996.html</wfw:comment><comments>http://www.cppblog.com/meglory/archive/2011/03/16/141996.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/meglory/comments/commentRss/141996.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/meglory/services/trackbacks/141996.html</trackback:ping><description><![CDATA[<span>
<p align="left"><a href="http://www.cnblogs.com/salonliudong/archive/2007/06/16/785604.html">http://www.cnblogs.com/salonliudong/archive/2007/06/16/785604.html</a><br><br><strong>一、Web Service简介</strong></p>
</span>
<p>&#160;</p>
<p><span>1.1</span><span>、</span><span>Web Service</span><span>基本概念</span></p>
<p><span>Web Service</span><span>也叫</span><span>XML Web Service WebService</span><span>是一种可以接收从</span><span>Internet</span><span>或者</span><span>Intranet</span><span>上的其它系统中传递过来的请求，轻量级的独立的通讯技术。是</span><span>:</span><span>通过</span><span>SOAP</span><span>在</span><span>Web</span><span>上提供的软件服务，使用</span><span>WSDL</span><span>文件进行说明，并通过</span><span>UDDI</span><span>进行注册。</span></p>
<p><span>XML</span><span>：</span><span>(</span><span>Extensible Markup Language</span><span>)</span><span>扩展型可标记语言。面向短期的临时数据处理、面向万维网络，是</span><span>Soap</span><span>的基础。</span></p>
<p><span>Soap</span><span>：</span><span>(Simple Object Access Protocol)</span><span>简单对象存取协议。是</span><span>XML Web Service </span><span>的通信协议。当用户通过</span><span>UDDI</span><span>找到你的</span><span>WSDL</span><span>描述文档后，他通过可以</span><span>SOAP</span><span>调用你建立的</span><span>Web</span><span>服务中的一个或多个操作。</span><span>SOAP</span><span>是</span><span>XML</span><span>文档形式的调用方法的规范，它可以支持不同的底层接口，像</span><span>HTTP(S)</span><span>或者</span><span>SMTP</span><span>。</span></p>
<p><span>WSDL</span><span>：</span><span>(Web Services Description Language) WSDL </span><span>文件是一个</span><span> XML </span><span>文档，用于说明一组</span><span> SOAP </span><span>消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。</span></p>
<p><span>UDDI (Universal Description, Discovery, and Integration)&nbsp;</span><span>是一种根据描述文档来引导系统查找相应服务的机制。</span><span>UDDI</span><span>利用</span><span>SOAP</span><span>消息机制（标准的</span><span>XML/HTTP</span><span>）来发布，编辑，浏览以及查找注册信息。它采用</span><span>XML</span><span>格式来封装各种不同类型的数据，并且发送到注册中心或者由注册中心来返回需要的数据。</span></p>
<p><span>1.2</span><span>、</span><span>XML Web Service</span><span>的特点</span></p>
<p><span>Web Service</span><span>的主要目标是跨平台的可互操作性。为了实现这一目标，</span><span>Web Service </span><span>完全基于</span><span>XML</span><span>（可扩展标记语言）、</span><span>XSD</span><span>（</span><span>XML Schema</span><span>）等独立于平台、独立于软件供应商的标准，是创建可互操作的、分布式应用程序的新平台。因此使用</span><span>Web Service</span><span>有许多优点</span><span>:</span></p>
<p><span>1</span><span>、跨防火墙的通信</span></p>
<p><span>&nbsp;</span><span>如果应用程序有成千上万的用户，而且分布在世界各地，那么客户端和服务器之间的通信将是一个棘手的问题。因为客户端和服务器之间通常会有防火墙或者代理服务器。传统的做法是，选择用浏览器作为客户端，写下一大堆</span><span>ASP</span><span>页面，把应用程序的中间层暴露给最终用户。这样做的结果是开发难度大，程序很难维护。</span><span> </span><span>要是客户端代码不再如此依赖于</span><span>HTML</span><span>表单，客户端的编程就简单多了。如果中间层组件换成</span><span>Web Service</span><span>的话，就可以从用户界面直接调用中间层组件，从而省掉建立</span><span>ASP</span><span>页面的那一步。要调用</span><span>Web Service</span><span>，可以直接使用</span><span>Microsoft SOAP Toolkit</span><span>或</span><span>.NET</span><span>这样的</span><span>SOAP</span><span>客户端，也可以使用自己开发的</span><span>SOAP</span><span>客户端，然后把它和应用程序连接起来。不仅缩短了开发周期，还减少了代码复杂度，并能够增强应用程序的可维护性。同时，应用程序也不再需要在每次调用中间层组件时，都跳转到相应的&#8220;结果页&#8221;。</span></p>
<p><span>2</span><span>、应用程序集成</span><span> </span></p>
<p><span>企业级的应用程序开发者都知道，企业里经常都要把用不同语言写成的、在不同平台上运行的各种程序集成起来，而这种集成将花费很大的开发力量。应用程序经常需要从运行的一台主机上的程序中获取数据；或者把数据发送到主机或其它平台应用程序中去。即使在同一个平台上，不同软件厂商生产的各种软件也常常需要集成起来。通过</span><span>Web Service</span><span>，应用程序可以用标准的方法把功能和数据&#8220;暴露&#8221;出来，供其它应用程序使用。</span></p>
<p><span>3</span><span>、</span><span>B2B</span><span>的集成</span><span> </span></p>
<p><span>B2B </span><span>指的是</span><span>Business to Business</span><span>，</span><span>as in businesses doing business with other businesses,</span><span>商家</span><span>(</span><span>泛指企业</span><span>)</span><span>对商家的电子商务，即企业与企业之间通过互联网进行产品、服务及信息的交换。通俗的说法是指进行电子商务交易的供需双方都是商家</span><span>(</span><span>或企业、公司</span><span>)</span><span>，她们使用了</span><span>Internet</span><span>的技术或各种商务网络平台，完成商务交易的过程。</span></p>
<p><span>Web Service</span><span>是</span><span>B2B</span><span>集成成功的关键。通过</span><span>Web Service</span><span>，公司可以只需把关键的商务应用&#8220;暴露&#8221;给指定的供应商和客户，就可以了，</span><span>Web Service</span><span>运行在</span><span>Internet</span><span>上，在世界任何地方都可轻易实现，其运行成本就相对较低。</span><span>Web Service</span><span>只是</span><span>B2B</span><span>集成的一个关键部分，还需要许多其它的部分才能实现集成。</span><span> </span><span>用</span><span>Web Service</span><span>来实现</span><span>B2B</span><span>集成的最大好处在于可以轻易实现互操作性。只要把商务逻辑&#8220;暴露&#8221;出来，成为</span><span>Web Service</span><span>，就可以让任何指定的合作伙伴调用这些商务逻辑，而不管他们的系统在什么平台上运行，使用什么开发语言。这样就大大减少了花在</span><span>B2B</span><span>集成上的时间和成本。</span></p>
<p><span>4</span><span>、软件和数据重用</span><span> </span></p>
<p><span>Web Service</span><span>在允许重用代码的同时，可以重用代码背后的数据。使用</span><span>Web Service</span><span>，再也不必像以前那样，要先从第三方购买、安装软件组件，再从应用程序中调用这些组件；只需要直接调用远端的</span><span>Web Service</span><span>就可以了。另一种软件重用的情况是，把好几个应用程序的功能集成起来，通过</span><span>Web Service </span><span>&#8220;暴露&#8221;出来，就可以非常容易地把所有这些功能都集成到你的门户站点中，为用户提供一个统一的、友好的界面。</span><span> </span><span>可以在应用程序中使用第三方的</span><span>Web Service </span><span>提供的功能，也可以把自己的应用程序功能通过</span><span>Web Service </span><span>提供给别人。两种情况下，都可以重用代码和代码背后的数据。</span><span> </span></p>
<p><span>从以上论述可以看出，</span><span>Web Service </span><span>在通过</span><span>Web</span><span>进行互操作或远程调用的时候是最有用的。不过，也有一些情况，</span><span>Web Service</span><span>根本不能带来任何好处，</span><span>Web Service</span><span>有一下缺点：</span></p>
<p><span>1</span><span>、</span><span> </span><span>单机应用程序</span><span> </span></p>
<p><span>目前，企业和个人还使用着很多桌面应用程序。其中一些只需要与本机上的其它程序通信。在这种情况下，最好就不要用</span><span>Web Service</span><span>，只要用本地的</span><span>API</span><span>就可以了。</span><span>COM</span><span>非常适合于在这种情况下工作，因为它既小又快。运行在同一台服务器上的服务器软件也是这样。当然</span><span>Web Service </span><span>也能用在这些场合，但那样不仅消耗太大，而且不会带来任何好处。</span><span> </span></p>
<p><span>2</span><span>、</span><span> </span><span>局域网的一些应用程序</span><span> </span></p>
<p><span>在许多应用中，所有的程序都是在</span><span>Windows</span><span>平台下使用</span><span>COM</span><span>，都运行在同一个局域网上。在这些程序里，使用</span><span>DCOM</span><span>会比</span><span>SOAP/HTTP</span><span>有效得多。与此相类似，如果一个</span><span>.NET</span><span>程序要连接到局域网上的另一个</span><span>.NET</span><span>程序，应该使用</span><span>.NET Remoting</span><span>。其实在</span><span>.NET Remoting</span><span>中，也可以指定使用</span><span>SOAP/HTTP</span><span>来进行</span><span>Web Service </span><span>调用。不过最好还是直接通过</span><span>TCP</span><span>进行</span><span>RPC</span><span>调用，那样会有效得多。</span></p>
<p><span>1.3</span><span>、</span><span>XML Web Service</span><span>的应用</span></p>
<p><span>1.</span><span>最初的</span><span> XML Web Service </span><span>通常是可以方便地并入应用程序的信息来源，如股票价格、天气预报、体育成绩等等。</span></p>
<p><span>2.</span><span>以</span><span> XML Web Service </span><span>方式提供现有应用程序，可以构建新的、更强大的应用程序，并利用</span><span> XML Web Service </span><span>作为构造块。</span></p>
<p><span>例如，用户可以开发一个采购应用程序，以自动获取来自不同供应商的价格信息，从而使用户可以选择供应商，提交订单，然后跟踪货物的运输，直至收到货物。而供应商的应用程序除了在</span><span>Web</span><span>上提供服务外，还可以使用</span><span>XML Web Service</span><span>检查客户的信用、收取货款，并与货运公司办理货运手续。</span></p>
<p align="center"><strong><span>二、</span></strong><strong><span>Web Service</span></strong><strong><span>开发</span></strong><strong></strong></p>
<p><span>.NET</span><span>平台内建了对</span><span>Web Service</span><span>的支持，包括</span><span>Web Service</span><span>的构建和使用。与其它开发平台不同，使用</span><span>.NET</span><span>平台，你不需要其他的工具或者</span><span>SDK</span><span>就可以完成</span><span>Web Service</span><span>的开发了。</span><span>.NET Framework</span><span>本身就全面支持</span><span>Web Service</span><span>，包括服务器端的请求处理器和对客户端发送和接受</span><span>SOAP</span><span>消息的支持。下来我们就一步一步的用</span><span>Microsoft Visual Studio .NET 2005</span><span>（后面简称</span><span>VS.Net 2005</span><span>）创建和使用一个简单的</span><span>Web Service</span><span>。</span></p>
<p><span>2.1</span><span>、用创建一个最简单的</span><span>Web Service</span></p>
<p><span>首先，打开</span><span>VS2005,</span><span>打开</span><span>&#8220;</span><span>文件</span><span>-</span><span>新建</span><span>-</span><span>网站</span><span>&#8221;</span><span>，选择</span><span>&#8220;ASP.NET Web</span><span>服务</span><span>&#8221;</span><span>。<br><br><img alt="" src="http://images.cnblogs.com/cnblogs_com/salonliudong/webservice1.JPG" height="445" width="679"><br><br></span></p>
<p><span>查看</span><span>Service.cs</span><span>代码，你会发现</span><span>VS.Net 2005</span><span>已经为</span><span>Web Service</span><span>文件建立了缺省的框架。原始代码为：</span></p>
<div><span>&nbsp;1</span>&nbsp;<span>using</span><span>&nbsp;System;<br></span><span>&nbsp;2</span>&nbsp;<span>using</span><span>&nbsp;System.Web;<br></span><span>&nbsp;3</span>&nbsp;<span>using</span><span>&nbsp;System.Web.Services;<br></span><span>&nbsp;4</span>&nbsp;<span>using</span><span>&nbsp;System.Web.Services.Protocols<br></span><span>&nbsp;5</span>&nbsp;<span>[WebService(Namespace&nbsp;</span><span>=</span>&nbsp;<span>"</span><span>http://tempuri.org/</span><span>"</span><span>)]<br></span><span>&nbsp;6</span>&nbsp;<span>[WebServiceBinding(ConformsTo&nbsp;</span><span>=</span><span>&nbsp;WsiProfiles.BasicProfile1_1)]<br></span><span>&nbsp;7</span>&nbsp;<span>public</span>&nbsp;<span>class</span><span>&nbsp;Service&nbsp;:&nbsp;System.Web.Services.WebService<br></span><span>&nbsp;8</span>&nbsp;<span>{<br></span><span>&nbsp;9</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>public</span><span>&nbsp;Service&nbsp;()&nbsp;<br></span><span>10</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>//</span><span>如果使用设计的组件，请取消注释以下行&nbsp;<br></span><span>11</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>//</span><span>InitializeComponent();&nbsp;</span><span><br></span><span>12</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span>13</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;[WebMethod]<br></span><span>14</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>public</span>&nbsp;<span>string</span><span>&nbsp;HelloWorld()&nbsp;{<br></span><span>15</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>return</span>&nbsp;<span>"</span><span>Hello&nbsp;World</span><span>"</span><span>;<br></span><span>16</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span>17</span>&nbsp;<span>}<br></span></div>
<p>&nbsp;</p>
<p><span>默认工程里面已经有一个</span><span>Hello World</span><span>的方法了，直接运行看看效果，</span></p>
<img alt="" src="http://images.cnblogs.com/cnblogs_com/salonliudong/webservice2.JPG" height="292" width="400"><br>
<p><span>点击显示页面上图中的</span><span>&#8220;HelloWorld&#8221;</span><span>超链接，跳转到下一页面<br><br><img alt="" src="http://images.cnblogs.com/cnblogs_com/salonliudong/webservice3.JPG" height="304" width="443"></span></p>
<span>再点击</span><span>&#8220;</span><span>调用</span><span>&#8221;</span><span>按钮，就可以看到用</span><span>XML</span><span>格式返回的</span><span>Web Service</span><span>结果下图。说明我们的</span><span>Web Service</span><span>环境没有问题，而且还初步接触了一下最简单的</span><span>Web Service</span><span>。<br><img alt="" src="http://images.cnblogs.com/cnblogs_com/salonliudong/webservice4.JPG" height="173" width="458"><br></span>
<p><span>2.2</span><span>、创建一个带有</span><span>简单</span><span>功能的</span><span>Web Service</span></p>
<p align="left"><strong><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></strong> </p>
<p align="left"><span>上面我们宏观的了解了</span><span>webservice</span><span>，其实它就是个对外的接口</span><span>,</span><span>里面有函数可供外部客户调用</span><span>(</span><span>注意</span><span>:</span><span>里面同样有客户不可调用的函数</span><span>).</span><span>假若我们是服务端</span><span>,</span><span>我们写好了个</span><span>webservice,</span><span>然后把它给了客户</span><span>(</span><span>同时我们给了他们调用规则</span><span>),</span><span>客户就可以在从服务端获取信息时处于一个相对透明的状态</span><span>.</span><span>即是客户不了解</span><span>(</span><span>也不需要</span><span>)</span><span>其过程</span><span>,</span><span>他们只获取数据</span><span>.</span><span>在代码文件里</span><span>,</span><span>如果我们写了一个函数后</span><span>,</span><span>希望此函数成为外部可调用的接口函数</span><span>,</span><span>我们必须在函数上面添上一行代码</span><span>[WebMethod],</span><span>如果你的函数没有这个申明</span><span>,</span><span>它将不能被用户引用。</span><span>WebMethod</span><span>方法有几种属性需要说明：</span></p>
<p align="left"><span>1</span><span>、</span><span>WebMethod </span><span>的</span><span> BufferResponse </span><span>属性</span><span> </span><span>启用对</span><span> XML Web services </span><span>方法响应的缓冲。当设置为</span><span> true</span><span>（默认设置）时，</span><span>ASP.NET </span><span>在将响应向下发送到客户端之前对整个响应进行缓冲。</span></p>
<p align="left"><span>[WebMethod(BufferResponse=false)]</span></p>
<p align="left"><span>2</span><span>、</span><span>WebMethod </span><span>的</span><span> CacheDuration </span><span>属性</span><span> </span><span>启用对</span><span> XML Web services </span><span>方法结果的缓存。</span><span>ASP.NET </span><span>将缓存每个唯一参数集的结果。</span></p>
<p align="left"><span>[WebMethod(CacheDuration=60)]</span></p>
<p align="left"><span>3</span><span>、</span><span>WebMethod </span><span>的</span><span> Description </span><span>属性</span><span> </span><span>提供</span><span> XML Web services </span><span>方法的说明，该说明将显示在服务帮助页上。除非另外指定，默认值为空字符串。</span></p>
<p align="left"><span>[WebMethod(Description="</span><span>我的方法</span><span>")]</span></p>
<p align="left"><span>4</span><span>、</span><span>WebMethod </span><span>的</span><span> EnableSession </span><span>属性</span><span> </span><span>启用</span><span> XML Web services </span><span>方法的会话状态。一旦启用，</span><span>XML Web services </span><span>就可以从</span><span> HttpContext.Current.Session </span><span>中直接访问会话状态集合，或者，如果它是从</span><span> WebService </span><span>基类继承的，则可以使用</span><span> WebService.Session </span><span>属性来访问会话状态集合。除非另外指定，默认值为</span><span> false</span><span>。</span></p>
<p align="left"><span>[WebMethod(EnableSession=true)]</span></p>
<p align="left"><span>5</span><span>、</span><span>WebMethod </span><span>的</span><span> MessageName </span><span>属性</span><span>) </span><span>使</span><span> XML Web services </span><span>能够唯一确定使用别名的重载方法。除非另外指定，默认值是方法名称。当指定</span><span> MessageName </span><span>时，结果</span><span> SOAP </span><span>消息将反映该名称，而不是实际的方法名称。</span></p>
<p align="left"><span>[WebMethod(MessageName="AddDoubles")]</span></p>
<p align="left"><span>6</span><span>、</span><span>WebMethod </span><span>的</span><span> TransactionOption </span><span>属性</span><span> </span><span>使</span><span> XML Web services </span><span>方法可以作为事务的根对象参与。虽然可以将</span><span> TransactionOption </span><span>属性</span><span> </span><span>设置为</span><span> TransactionOption </span><span>枚举的任意值，但</span><span> XML Web services </span><span>方法仅有两个可能的行为：它不参与事务或它创建一个新事务。</span></p>
<p align="left"><span>using System.EnterpriseServices;</span></p>
<p align="left"><span>[WebMethod(TransactionOption=TransactionOption.RequiresNew)]</span></p>
<p align="left"><span>下来我们开始编写一个简单的</span><span>Web Service </span><span>的例子。</span></p>
<p align="left"><span>先把默认的</span><span>HelloWorld</span><span>方法注释掉，简单的写了求加减乘除运算的四个方法；</span></p>
<p align="left"></p>
<div><span>&nbsp;1</span>&nbsp;<span>using</span><span>&nbsp;System;<br></span><span>&nbsp;2</span>&nbsp;<span>using</span><span>&nbsp;System.Web;<br></span><span>&nbsp;3</span>&nbsp;<span>using</span><span>&nbsp;System.Web.Services;<br></span><span>&nbsp;4</span>&nbsp;<span>using</span><span>&nbsp;System.Web.Services.Protocols;<br></span><span>&nbsp;5</span>&nbsp;<span><br></span><span>&nbsp;6</span>&nbsp;<span>[WebService(Namespace&nbsp;</span><span>=</span>&nbsp;<span>"</span><span>http://tempuri.org/</span><span>"</span><span>)]<br></span><span>&nbsp;7</span>&nbsp;<span>[WebServiceBinding(ConformsTo&nbsp;</span><span>=</span><span>&nbsp;WsiProfiles.BasicProfile1_1)]<br></span><span>&nbsp;8</span>&nbsp;<span>public</span>&nbsp;<span>class</span><span>&nbsp;Service&nbsp;:&nbsp;System.Web.Services.WebService<br></span><span>&nbsp;9</span>&nbsp;<span>{<br></span><span>10</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>public</span><span>&nbsp;Service&nbsp;()&nbsp;{<br></span><span>11</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>//</span><span>如果使用设计的组件，请取消注释以下行&nbsp;<br></span><span>12</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>//</span><span>InitializeComponent();&nbsp;</span><span><br></span><span>13</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span>14</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>//</span><span>[WebMethod]<br></span><span>15</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>//</span><span>public&nbsp;string&nbsp;HelloWorld()&nbsp;{<br></span><span>16</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>//</span><span>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;"Hello&nbsp;World";<br></span><span>17</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>//</span><span>}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><br></span><span>18</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;[WebMethod(Description</span><span>=</span><span>"</span><span>求和的方法</span><span>"</span><span>)]<br></span><span>19</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>public</span>&nbsp;<span>double</span><span>&nbsp;addition(</span><span>double</span><span>&nbsp;i,</span><span>double</span><span>&nbsp;j)<br></span><span>20</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span>21</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>return</span><span>&nbsp;i&nbsp;</span><span>+</span><span>&nbsp;j;<br></span><span>22</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span>23</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;[WebMethod(Description</span><span>=</span><span>"</span><span>求差的方法</span><span>"</span><span>)]<br></span><span>24</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>public</span>&nbsp;<span>double</span><span>&nbsp;subtract(</span><span>double</span><span>&nbsp;i,&nbsp;</span><span>double</span><span>&nbsp;j)<br></span><span>25</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span>26</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>return</span><span>&nbsp;i&nbsp;</span><span>-</span><span>&nbsp;j;<br></span><span>27</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span>28</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;[WebMethod(Description</span><span>=</span><span>"</span><span>求积的方法</span><span>"</span><span>)]<br></span><span>29</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>public</span>&nbsp;<span>double</span><span>&nbsp;multiplication(</span><span>double</span><span>&nbsp;i,&nbsp;</span><span>double</span><span>&nbsp;j)<br></span><span>30</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span>31</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>return</span><span>&nbsp;i&nbsp;</span><span>*</span><span>&nbsp;j;<br></span><span>32</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span>33</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;[WebMethod(Description</span><span>=</span><span>"</span><span>求商的方法</span><span>"</span><span>)]<br></span><span>34</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>public</span>&nbsp;<span>double</span><span>&nbsp;division(</span><span>double</span><span>&nbsp;i,&nbsp;</span><span>double</span><span>&nbsp;j)<br></span><span>35</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span>36</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>if</span><span>&nbsp;(j&nbsp;</span><span>!=</span>&nbsp;<span>0</span><span>)<br></span><span>37</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>return</span><span>&nbsp;i&nbsp;</span><span>/</span><span>&nbsp;j;<br></span><span>38</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>else</span><span><br></span><span>39</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>return</span>&nbsp;<span>0</span><span>;&nbsp;<br></span><span>40</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span>41</span>&nbsp;<span>}<br></span><span>42</span>&nbsp;</div>
<span>运行可以看到我们自己写的可以被调用的方法，如下图：<br><img alt="" src="http://images.cnblogs.com/cnblogs_com/salonliudong/webservice5.JPG" height="332" width="431"><br></span><strong><span>同样点击</span></strong><strong><span>addition</span></strong><strong><span>方法</span></strong><strong><span>,</span></strong><strong><span>进入</span></strong><strong><span>addition</span></strong><strong><span>方法的调用页。<br><img alt="" src="http://images.cnblogs.com/cnblogs_com/salonliudong/webservice6.JPG" height="305" width="448"><br></span></strong>
<p align="left"><strong><span>在参数上面输入参数</span></strong><strong><span>i=3,j=3,</span></strong><strong><span>如上图</span></strong><strong><span>,</span></strong><strong><span>点击调用</span></strong><strong><span>,</span></strong><span>就可以看到用</span><span>XML</span><span>格式返回的</span><span>Web Service</span><span>结果</span><span>(i</span><span>与</span><span>j</span><span>相加的结果</span><span>)</span><span>下图<br></span></p>
<img alt="" src="http://images.cnblogs.com/cnblogs_com/salonliudong/webservice7.JPG" height="90" width="394"><br>
<p align="left"><strong><span>到这里</span></strong><strong><span>,</span></strong><strong><span>我们会发现</span></strong><strong><span>,</span></strong><strong><span>其实</span></strong><strong><span>webservice</span></strong><strong><span>并不是那么的神秘</span></strong><strong><span>,</span></strong><strong><span>它也不过只是个接口</span></strong><strong><span>,</span></strong><strong><span>对我们而言</span></strong><strong><span>,</span></strong><strong><span>侧重点就是是接口函数的编写</span></strong><strong><span>.</span></strong><strong></strong></p>
<p><span>2.3</span><span>、用</span><span>ASP.NET</span><span>调用</span><span>Web Service</span><span><br>首先，打开</span><span>VS2005,</span><span>打开</span><span>&#8220;</span><span>文件</span><span>-</span><span>新建</span><span>-</span><span>网站</span><span>&#8221;</span><span>，选择</span><span>&#8220;ASP.NET</span><span>网站</span><span>&#8221;</span><span>。</span></p>
<img alt="" src="http://images.cnblogs.com/cnblogs_com/salonliudong/webservice8.JPG" height="444" width="679"><br><span>选好存储位置，语言后点击确定，进入默认页面。然后先添加</span><span>Web</span><span>引用，把</span><span>WebService</span><span>引到当前的工程里面。方法是：在资源管理器中点击右键，选择添加</span><span>Web </span><span>引用，调出对话框：<br><img alt="" src="http://images.cnblogs.com/cnblogs_com/salonliudong/webservice9.JPG" height="494" width="700"><br></span>
<p><span>在</span><span>URL</span><span>中填入，前面写好的</span><span>WebService</span><span>运行后浏览器上面显示的地址，点击&#8220;前往&#8221;按钮，如上图，就会显示出所引用的</span><span>WebService</span><span>中可以调用的方法，然后点击&#8220;添加引用&#8221;，就将</span><span>webservice</span><span>引用到了当前的工程里面</span><span> </span><span>，如下图，解决方案中会出现引进来的</span><span>WebService</span><span>文件</span></p>
<img alt="" src="http://images.cnblogs.com/cnblogs_com/salonliudong/webservice10.JPG" height="82" width="198"><br>
<p align="left"><span>我们在这就练习调用</span><span>webservice</span><span>的四个方法，做一个简单的调用的例子，先在网站的前台添加几个控件，代码如下：</span><span> </span></p>
<div><span>&nbsp;1</span>&nbsp;<span>&lt;%</span><span>@&nbsp;Page&nbsp;Language</span><span>=</span><span>"</span><span>C#</span><span>"</span><span>&nbsp;AutoEventWireup</span><span>=</span><span>"</span><span>true</span><span>"</span><span>&nbsp;&nbsp;CodeFile</span><span>=</span><span>"</span><span>Default.aspx.cs</span><span>"</span><span>&nbsp;Inherits</span><span>=</span><span>"</span><span>_Default</span><span>"</span>&nbsp;<span>%&gt;<br><br></span><span>&nbsp;2</span>&nbsp;<span><br></span><span>&nbsp;3</span>&nbsp;<span>&lt;!</span><span>DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN"&nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span>&gt;</span><span><br></span><span>&nbsp;4</span>&nbsp;<span>&lt;</span><span>html&nbsp;</span><span>xmlns</span><span>="http://www.w3.org/1999/xhtml"</span>&nbsp;<span>&gt;</span><span><br></span><span>&nbsp;5</span>&nbsp;<span>&lt;</span><span>head&nbsp;</span><span>runat</span><span>="server"</span><span>&gt;</span><span><br></span><span>&nbsp;6</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&lt;</span><span>title</span><span>&gt;</span><span>Webservice调用实例</span><span>&lt;/</span><span>title</span><span>&gt;</span><span><br></span><span>&nbsp;7</span>&nbsp;<span>&lt;/</span><span>head</span><span>&gt;</span><span><br></span><span>&nbsp;8</span>&nbsp;<span>&lt;</span><span>body</span><span>&gt;</span><span><br></span><span>&nbsp;9</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&lt;</span><span>form&nbsp;</span><span>id</span><span>="form1"</span><span>&nbsp;runat</span><span>="server"</span><span>&gt;</span><span><br></span><span>10</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&lt;</span><span>div</span><span>&gt;</span><span><br></span><span>11</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&lt;</span><span>asp:TextBox&nbsp;</span><span>ID</span><span>="Num1"</span><span>&nbsp;runat</span><span>="server"</span><span>&gt;&lt;/</span><span>asp:TextBox</span><span>&gt;</span><span><br></span><span>12</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&lt;</span><span>select&nbsp;</span><span>id</span><span>="selectOper"</span><span>&nbsp;runat&nbsp;</span><span>=&nbsp;"server"</span><span>&gt;</span><span><br></span><span>13</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&lt;</span><span>option</span><span>&gt;</span><span>+</span><span>&lt;/</span><span>option</span><span>&gt;</span><span><br></span><span>14</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&lt;</span><span>option</span><span>&gt;</span><span>-</span><span>&lt;/</span><span>option</span><span>&gt;</span><span><br></span><span>15</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&lt;</span><span>option</span><span>&gt;</span><span>*</span><span>&lt;/</span><span>option</span><span>&gt;</span><span><br></span><span>16</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&lt;</span><span>option</span><span>&gt;</span><span>/</span><span>&lt;/</span><span>option</span><span>&gt;</span><span><br></span><span>17</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&lt;/</span><span>select</span><span>&gt;</span><span><br></span><span>18</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&lt;</span><span>asp:TextBox&nbsp;</span><span>ID</span><span>="Num2"</span><span>&nbsp;runat</span><span>="server"</span><span>&gt;&lt;/</span><span>asp:TextBox</span><span>&gt;</span><span><br></span><span>19</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&lt;</span><span>span&nbsp;</span><span>id&nbsp;</span><span>=&nbsp;E&nbsp;</span><span>runat&nbsp;</span><span>=&nbsp;"server"</span><span>&gt;&lt;/</span><span>span</span><span>&gt;</span><span><br></span><span>20</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&lt;</span><span>asp:TextBox&nbsp;</span><span>ID</span><span>="Result"</span><span>&nbsp;runat</span><span>="server"</span><span>&gt;&lt;/</span><span>asp:TextBox</span><span>&gt;</span><span><br></span><span>21</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&lt;/</span><span>div</span><span>&gt;</span><span><br></span><span>22</span>&nbsp;<span>&lt;/</span><span>form</span><span>&gt;</span><span><br></span><span>23</span>&nbsp;<span>&lt;/</span><span>body</span><span>&gt;</span><span><br></span><span>24</span>&nbsp;<span>&lt;/</span><span>html</span><span>&gt;</span><span><br></span><span>25</span>&nbsp;</div>
<p>&nbsp;</p>
<span>然后在后台写调用的代码，调用之前和使用其它的对象一样，要先实例化，实例化的方法是</span><span>localhost.<span>Service</span> a = <span>new</span> localhost.<span>Service</span>();</span><span>然后就可以通过</span><span>a</span><span>来访问</span><span>WebService</span><span>里面提供的方法了。在这个例子里面，动态的创建了一个</span><span>button</span><span>控件来触发</span><span>WebService</span><span>的调用，后台代码如下：<br>
<div><span>&nbsp;1</span>&nbsp;<span>using</span><span>&nbsp;System;<br></span><span>&nbsp;2</span>&nbsp;<span>using</span><span>&nbsp;System.Data;<br></span><span>&nbsp;3</span>&nbsp;<span>using</span><span>&nbsp;System.Configuration;<br></span><span>&nbsp;4</span>&nbsp;<span>using</span><span>&nbsp;System.Web;<br></span><span>&nbsp;5</span>&nbsp;<span>using</span><span>&nbsp;System.Web.Security;<br></span><span>&nbsp;6</span>&nbsp;<span>using</span><span>&nbsp;System.Web.UI;<br></span><span>&nbsp;7</span>&nbsp;<span>using</span><span>&nbsp;System.Web.UI.WebControls;<br></span><span>&nbsp;8</span>&nbsp;<span>using</span><span>&nbsp;System.Web.UI.WebControls.WebParts;<br></span><span>&nbsp;9</span>&nbsp;<span>using</span><span>&nbsp;System.Web.UI.HtmlControls;<br></span><span>10</span>&nbsp;<span>public</span><span>&nbsp;partial&nbsp;</span><span>class</span><span>&nbsp;_Default&nbsp;:&nbsp;System.Web.UI.Page&nbsp;<br></span><span>11</span>&nbsp;<span>{<br></span><span>12</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>protected</span>&nbsp;<span>void</span><span>&nbsp;Page_Load(</span><span>object</span><span>&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br></span><span>13</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span>14</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>//</span><span>在页面加载的时候动态创建一个按钮，在它的事件里调用Webservice</span><span><br></span><span>15</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Button&nbsp;btn&nbsp;</span><span>=</span>&nbsp;<span>new</span><span>&nbsp;Button();<br></span><span>16</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn.Width&nbsp;</span><span>=</span>&nbsp;<span>20</span><span>;<br></span><span>17</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn.Text&nbsp;</span><span>=</span>&nbsp;<span>"</span><span>&nbsp;=&nbsp;</span><span>"</span><span>;<br></span><span>18</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn.Click&nbsp;</span><span>+=</span><span>new</span><span>&nbsp;EventHandler(btn_Click);<br></span><span>19</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E.Controls.Add(btn);<br></span><span>20</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span>21</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>///</span>&nbsp;<span>&lt;summary&gt;</span><span><br></span><span>22</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>///</span><span>&nbsp;定义动态创建Button的Click事件，在这个事件中调用Webservice<br></span><span>23</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>///</span>&nbsp;<span>&lt;/summary&gt;</span><span><br></span><span>24</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>///</span>&nbsp;<span>&lt;param&nbsp;name="sender"&gt;&lt;/param&gt;</span><span><br></span><span>25</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>///</span>&nbsp;<span>&lt;param&nbsp;name="e"&gt;&lt;/param&gt;</span><span><br></span><span>26</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>void</span><span>&nbsp;btn_Click(</span><span>object</span><span>&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br></span><span>27</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span>28</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>if</span><span>&nbsp;(Num1.Text&nbsp;</span><span>!=</span>&nbsp;<span>""</span>&nbsp;<span>&amp;&amp;</span><span>&nbsp;Num2.Text&nbsp;</span><span>!=</span>&nbsp;<span>""</span><span>)<br></span><span>29</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span>30</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>//</span><span>实例化引用的webservice对象</span><span><br></span><span>31</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;localhost.Service&nbsp;WebserviceInstance&nbsp;</span><span>=</span>&nbsp;<span>new</span><span>&nbsp;localhost.Service();<br></span><span>32</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>int</span><span>&nbsp;Oper&nbsp;</span><span>=</span><span>&nbsp;selectOper.SelectedIndex;<br></span><span>33</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>switch</span><span>(&nbsp;Oper)<br></span><span>34</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span>35</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>//</span><span>通过实例化的webservice对象来调用Webservice暴露的方法</span><span><br></span><span>36</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>case</span>&nbsp;<span>0</span><span>:<br></span><span>37</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result.Text&nbsp;</span><span>=</span><span>&nbsp;WebserviceInstance.addition(</span><span>double</span><span>.Parse(Num1.Text),&nbsp;</span><span>double</span><span>.Parse(Num2.Text)).ToString();<br></span><span>38</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>break</span><span>;<br></span><span>39</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>case</span>&nbsp;<span>1</span><span>:<br></span><span>40</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result.Text&nbsp;</span><span>=</span><span>&nbsp;WebserviceInstance.subtract(</span><span>double</span><span>.Parse(Num1.Text),&nbsp;</span><span>double</span><span>.Parse(Num2.Text)).ToString();<br></span><span>41</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>break</span><span>;<br></span><span>42</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>case</span>&nbsp;<span>2</span><span>:<br></span><span>43</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result.Text&nbsp;</span><span>=</span><span>&nbsp;WebserviceInstance.multiplication(</span><span>double</span><span>.Parse(Num1.Text),&nbsp;</span><span>double</span><span>.Parse(Num2.Text)).ToString();<br></span><span>44</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>break</span><span>;<br></span><span>45</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>case</span>&nbsp;<span>3</span><span>:<br></span><span>46</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result.Text&nbsp;</span><span>=</span><span>&nbsp;WebserviceInstance.division(</span><span>double</span><span>.Parse(Num1.Text),&nbsp;</span><span>double</span><span>.Parse(Num2.Text)).ToString();<br></span><span>47</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>break</span><span>;<br></span><span>48</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span>49</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span>50</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span>51</span>&nbsp;<span>}<br></span><span>52</span>&nbsp;</div>
</span><span>运行后可以看到效果，如下图所示，在前面两个</span><span>Textbox</span><span>里面输入两个操作数，在中间的下拉列表中选择操作符，然后点击&#8220;</span><span>=</span><span>&#8221;号，将计算的结果输出到第三个</span><span>Textbox</span><span>里面。<br><img alt="" src="http://images.cnblogs.com/cnblogs_com/salonliudong/webservice11.JPG" height="97" width="556"><br></span><span>而整个计算并不是在本地进行的，是在</span><span>Web</span><span>服务端进行计算的然后将结果通过</span><span>XML</span><span>返还给了调用方的，所以，在运行该程序的时候，</span><span>WebService</span><span>程序还必须启动，否则会报无法连接远程服务器的异常，如下图：<br><img alt="" src="http://images.cnblogs.com/cnblogs_com/salonliudong/webservice12.JPG" height="208" width="378"><br></span><span>到此一个一个简单的</span><span>WebService</span><span>的开发和调用就已经完成了，在实际应用中可以根据自己的需要，写一些功能强大的，复杂的</span><span>WebService</span><span>，不管多么复杂，整个流程都是这样的。</span><img src ="http://www.cppblog.com/meglory/aggbug/141996.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/meglory/" target="_blank">meglory</a> 2011-03-16 17:31 <a href="http://www.cppblog.com/meglory/archive/2011/03/16/141996.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>