<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>ISAPI 应用</title><link>http://blog.vckbase.com/zaboli/category/356.html</link><description>ISAPI 应用</description><managingEditor>玻璃小屋</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>玻璃小屋</dc:creator><title>Web Service实践篇 (转)</title><link>http://blog.vckbase.com/zaboli/archive/2005/02/17/3098.html</link><pubDate>Thu, 17 Feb 2005 01:54:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2005/02/17/3098.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/3098.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2005/02/17/3098.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/3098.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/3098.html</trackback:ping><description>&lt;TABLE class=border cellSpacing=0 cellPadding=2 width="100%" align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR vAlign=center align=middle&gt;
&lt;TD colSpan=2 height=40&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR class=tdbg_rightall align=middle&gt;
&lt;TD colSpan=2&gt;［ 作者：pie&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;转贴自：&lt;A href="http://www.cndot.com/"&gt;&lt;FONT color=#000000&gt;www.cndot.com&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;点击数：858&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;更新时间：2003-12-10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;文章录入：&lt;A href="http://www.cnitt.net/wz2/UserInfo.asp?UserID=6"&gt;&lt;FONT color=#000000&gt;cya001&lt;/FONT&gt;&lt;/A&gt; ］&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD colSpan=2&gt;
&lt;TABLE style="WORD-BREAK: break-all" cellSpacing=5 cellPadding=0 width=740 align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top height=200&gt;
&lt;TABLE cellSpacing=0 cellPadding=10 align=left border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;!-- ********300广告1开始******** --&gt;
&lt;SCRIPT language=JavaScript1.1 src="http://smarttrade.allyes.com/main/adfshow?user=1|6199|62355&amp;amp;db=smarttrade&amp;amp;border=0&amp;amp;local=yes&amp;amp;js=ie"&gt;&lt;/SCRIPT&gt;
&lt;A href="http://smarttrade.allyes.com/main/adfclick?user=1|6199|62355&amp;amp;db=smarttrade&amp;amp;log=on&amp;amp;ip=218.82.89.142&amp;amp;bid=2144&amp;amp;cid=0&amp;amp;sid=0&amp;amp;exp1=-662132649&amp;amp;exp2=9494568229&amp;amp;cache=0&amp;amp;url=http://www.hx2004.com/active/wzlm/index.aspx?from=smarttrade&amp;amp;adfcid=62355&amp;amp;adfbid=2144" target=_blank&gt;&lt;/A&gt;&amp;nbsp;&lt;!-- ********300广告1结束******** --&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;无聊到了极点，所以这篇文章就当灌灌水，希望对于那些想了解，学习WebService&lt;BR&gt;的人有所帮助，权当抛砖引玉，不过我担心引来石头就死翘翘了：）,对于WebService&lt;BR&gt;这种技术的理论，网上已经有很多专家写的文章了，都是游说你去学WebService,说&lt;BR&gt;它什么"未来软件的开发模式 ....",什么什么的，看了的人绝对会动心的，动心的话&lt;BR&gt;看看这篇文章，就可能会对WebService是什么样子，怎么发布，怎么调用有一丁点了&lt;BR&gt;解了，废话一大堆，好了，让我们开始吧，我现在讲的是Microsoft WebService，如果&lt;BR&gt;对于用delephi开发WebService感兴趣的人，请看前面gnar大虾的文章&amp;lt;&amp;lt;WebService(下)&amp;gt;&amp;gt; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;分两种情况来介绍WebService的，一种是用记事本编写，然后利用wsdl.exe csc.exe来编译&lt;BR&gt;另外一种是借助Microsoft Visual Studio.NET开发工具&lt;BR&gt;&lt;BR&gt;一:用记事本编写，然后利用wsdl.exe csc.exe...来编译 &lt;BR&gt;你要调用一个WebService，首先你要知道这个WebService的wsdl（Web 服务说明语言）地址，&lt;BR&gt;这个wsdl是用来描述,说明你所要调用的这个WebService的，在.NET平台上它是自动生成的，&lt;BR&gt;它就可以解析出你提供的服务名称、相关的参数、返回值类型以及服务的URI地址。具备这&lt;BR&gt;些信息，客户就可以采用SOAP格式调用你的服务了. &lt;BR&gt;首先我们来发布一个WebService-------helloworld.asmx&lt;BR&gt;用记事本编写后保存成helloworld.asmx放在c:/inetpub/wwwroot/test/目录里面&lt;BR&gt;&amp;lt;%@ WebService Language="C#" Class="test" %&amp;gt; &lt;BR&gt;using System;&lt;BR&gt;using System.Web.Services;&lt;BR&gt;public class test:WebService&lt;BR&gt;{&lt;BR&gt;[WebMethod]&lt;BR&gt;public string helloworld()&lt;BR&gt;{&lt;BR&gt;return "hello,world";&lt;BR&gt;}&lt;BR&gt;}&lt;BR&gt;好了,现在我们通过浏览器来看看我们发布的WebService是什么样子的？&lt;BR&gt;&lt;FONT color=#0033cc&gt;http://localhost/test/helloworld.asmx&lt;/FONT&gt;&lt;BR&gt;看到了没？这就是发布好了的WebService，easy吧？&lt;BR&gt;接着，我们来看看它的wsdl是什么样子的？&lt;BR&gt;&lt;FONT color=#0033cc&gt;http://localhost/test/helloworld.asmx?wsdl&lt;/FONT&gt;&lt;BR&gt;在.net平台上它是自动生成的 &lt;BR&gt;一个WebService发布好了，我们要怎么去调用呢？&lt;BR&gt;你调用的Client端可以是控制台程序，也可以是web的形式...等等&lt;BR&gt;无论是什么形式的Client端，一次Web Service的完整调用是这样的（不包含发现过程)&lt;BR&gt;1. 客户请求Server的WSDL文档（你的URL应该是WSDL的地址）。&lt;BR&gt;2. 客户解析WSDL的内容，获得服务的名称、地址、参数类型和返回值类型。&lt;BR&gt;3. 根据以上信息，客户可以选择生成一个Proxy类：&lt;BR&gt;&amp;nbsp;用于将调用的参数包装到SOAP Envelop中，生成调用的XML格式数据，发送HTTP请求。&lt;BR&gt;&amp;nbsp;接受到HTTP请求的回应之后，解析SOAP数据，生成返回值，并返回。&lt;BR&gt;4. 有了上述Proxy，客户代码就可以透明的调用Web Service了（与调用其他本地函数相同的方式）。&lt;BR&gt;我们先学习怎么用控制台程序去调用这个WebService吧&lt;BR&gt;第1，2步我们都已经完成了，我们根据wsdl的信息来生成一个代理类（Proxy类)&lt;BR&gt;我们先得到这个Proxy类的源文件吧！&lt;BR&gt;C:\&amp;gt;cd c:\Program files\microsoft.net\frameworksdk\bin&lt;BR&gt;C:\Program Files\Microsoft.NET\FrameworkSDK\Bin&amp;gt;wsdl /l:cs /n:pie /out:c:\inetpu&lt;BR&gt;b\wwwroot\test\pie.cs &lt;FONT color=#0033cc&gt;http://localhost/test/helloworld.asmx?wsdl&lt;/FONT&gt;&lt;BR&gt;Microsoft (R) Web Services Description Language Utility&lt;BR&gt;[Microsoft (R) .NET Framework, Version 1.0.2914.16]&lt;BR&gt;Copyright (C) Microsoft Corp. 1998-2001. All rights reserved. &lt;BR&gt;Writing file 'c:\inetpub\wwwroot\test\pie.cs'.&lt;BR&gt;这样我们在c:\inetpub\wwwroot\test\就可以得到代理类pie.cs的源代码&lt;BR&gt;它是一个以pie为名字空间,里面有个test类，类里面有个接口helloworld() &lt;BR&gt;接下来呢？我们必须把它编译成中间语言*.dll &lt;BR&gt;C:\&amp;gt;cd C:\WINNT\Microsoft.NET\Framework\v1.0.2914&lt;BR&gt;C:\WINNT\Microsoft.NET\Framework\v1.0.2914&amp;gt;csc /t:library /out:c:\inetpub\wwwroo&lt;BR&gt;t\test\pie.dll /r:System.web.services.dll c:\inetpub\wwwroot\test\pie.cs&lt;BR&gt;Microsoft (R) Visual C# 编译器版本7.00.9254 [CLR version v1.0.2914]&lt;BR&gt;版权所有 (C) Microsoft Corp 2000-2001。保留所有权利。 &lt;BR&gt;这样我们就可以在c:\inetpub\wwwroot\test\找到代理类的中间语言pie.dll&lt;BR&gt;pie.dll也是我们所需要的，Client端就是通过这个代理来访问，调用WebService的 &lt;BR&gt;现在我们可以调用了 &lt;BR&gt;I:我们先建立调用这个WebService的控制台程序console_pie.cs &lt;BR&gt;放在c:\inetpub\wwwroot\test\下&lt;BR&gt;using pie;&lt;BR&gt;using System;&lt;BR&gt;class hehe&lt;BR&gt;{&lt;BR&gt;static void Main()&lt;BR&gt;{&lt;BR&gt;test ll=new test();&lt;BR&gt;string kk=ll.helloworld();&lt;BR&gt;Console.WriteLine(kk);&lt;BR&gt;}&lt;BR&gt;}&lt;BR&gt;我们现在就可以把他编译成可执行文件*.exe&lt;BR&gt;C:\WINNT\Microsoft.NET\Framework\v1.0.2914&amp;gt;csc.exe /r:c:\inetpub\wwwroot\test\pi&lt;BR&gt;e.dll /out:c:\inetpub\wwwroot\test\console_pie.exe c:\inetpub\wwwroot\test\console_pie.cs&lt;BR&gt;Microsoft (R) Visual C# 编译器版本7.00.9254 [CLR version v1.0.2914]&lt;BR&gt;版权所有 (C) Microsoft Corp 2000-2001。保留所有权利。 &lt;BR&gt;现在，整个过程完成了，我们来看看，我们的调用成功了吗？&lt;BR&gt;C:\&amp;gt;cd c:\inetpub\wwwroot\test\&lt;BR&gt;C:\Inetpub\wwwroot\test&amp;gt;console_pie&lt;BR&gt;hello,world&lt;BR&gt;oh,yeah!我们可以看到console_pie.exe通过SOAP来调用&lt;FONT color=#0033cc&gt;http://localhost/test/helloworld.asmx&lt;/FONT&gt;&lt;BR&gt;成功了.&lt;BR&gt;II:Client端为Web的形式 &lt;BR&gt;由于微软推荐表现与实现的分离，我们也采用这种方式，建立两个文件&lt;BR&gt;web_pie.aspx和web_pie.aspx.cs &lt;BR&gt;web_pie.aspx的内容：&lt;BR&gt;&amp;lt;%@ Page language="c#" Codebehind="web_pie.aspx.cs" Inherits="web_pie.WebForm1" %&amp;gt;&lt;BR&gt;&amp;lt;HTML&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;lt;HEAD&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;meta name="CODE_LANGUAGE" Content="C#"&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/HEAD&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;lt;body MS_POSITIONING="GridLayout"&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;form id="Form1" method="post" runat="server"&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;FONT face="宋体"&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;asp:Label id="Label1" style="Z-INDEX: 101; LEFT: 244px; POSITION: absolute; TOP: 53px" runat="server" Width="101px" Height="13px"&amp;gt;Label&amp;lt;/asp:Label&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 248px; POSITION: absolute; TOP: 119px" runat="server" Text="Button"&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/FONT&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/form&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/body&amp;gt;&lt;BR&gt;&amp;lt;/HTML&amp;gt; &lt;BR&gt;web_pie.aspx.cs的内容:&lt;BR&gt;using System;&lt;BR&gt;using System.Collections;&lt;BR&gt;using System.ComponentModel;&lt;BR&gt;using System.Data;&lt;BR&gt;using System.Drawing;&lt;BR&gt;using System.Web;&lt;BR&gt;using System.Web.SessionState;&lt;BR&gt;using System.Web.UI;&lt;BR&gt;using System.Web.UI.WebControls;&lt;BR&gt;using System.Web.UI.HtmlControls;&lt;BR&gt;namespace web_pie&lt;BR&gt;{ &lt;BR&gt;&amp;nbsp; &amp;nbsp; public class WebForm1 : System.Web.UI.Page&lt;BR&gt;&amp;nbsp; &amp;nbsp; {&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protected System.Web.UI.WebControls.Label Label1;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protected System.Web.UI.WebControls.Button Button1;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public WebForm1()&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Page.Init += new System.EventHandler(Page_Init);&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private void Page_Load(object sender, System.EventArgs e)&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;BR&gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private void Page_Init(object sender, EventArgs e)&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;BR&gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; InitializeComponent();&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #region Web Form Designer generated code&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private void InitializeComponent()&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; { &amp;nbsp; &amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.Button1.Click += new System.EventHandler(this.Button1_Click);&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.Load += new System.EventHandler(this.Page_Load); &lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #endregion &lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private void Button1_Click(object sender, System.EventArgs e)&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pie.test kk=new pie.test ();&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Label1.Text =kk.helloworld ();&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;BR&gt;&amp;nbsp; &amp;nbsp; }&lt;BR&gt;} &lt;BR&gt;可以看的出来，web_pie.aspx用于存放网页的表现形式，而web_pie.aspx.cs用于存放网页的实现部分&lt;BR&gt;这样对于以后代码的维护就好多了，而不像以前asp3.0的时候是镶入在html代码中的，不易修改:) &lt;BR&gt;使用code behind page的时候（就是独立于.aspx的.aspx.cs文件），需要预先编译.aspx.cs文件为.dll&lt;BR&gt;现在我们来编译 &lt;BR&gt;C:\WINNT\Microsoft.NET\Framework\v1.0.2914&amp;gt;csc /t:library /out:c:\inetpub\wwwroo&lt;BR&gt;t\test\web_pie.dll /r:c:\inetpub\wwwroot\test\bin\pie.dll c:\inetpub\wwwroot\test\we&lt;BR&gt;b_pie.aspx.cs&lt;BR&gt;Microsoft (R) Visual C# 编译器版本7.00.9254 [CLR version v1.0.2914]&lt;BR&gt;版权所有 (C) Microsoft Corp 2000-2001。保留所有权利。 &lt;BR&gt;编译完成了,这里说一下，如果Client端是Web端的话，默认是在*.aspx的同一个位置上建立一个&lt;BR&gt;bin文件夹，然后把web_pie.dll部署到文件夹里面，这样调用是web会默认自己去bin目录下找&lt;BR&gt;名字空间,好了，我们来看一下调用会出现什么样的结果:&lt;BR&gt;&lt;FONT color=#0033cc&gt;http://localhost/test/web_pie.aspx&lt;/FONT&gt;&lt;BR&gt;好了，出现网页了，我们摁下那个button看看&lt;BR&gt;天啊！出错了!!!!!!!!!&lt;BR&gt;找不到文件或程序集名称&amp;#8220;pie&amp;#8221;，或找不到它的一个依赖项。&lt;BR&gt;&lt;BR&gt;通过ildasm.exe察看一下web_pie.dll可以看出他的确没有名字空间pie,我也不明白&lt;BR&gt;我编译的时候已经加入/r开关了，为什么没有把pie部署到web_pie名字空间底下!&lt;BR&gt;不过无所谓，他没有部署，我们自己来！&lt;BR&gt;把c:\inetpub\wwwroot\test\pie.dll拷贝到bin目录底下！&lt;BR&gt;好了，我们摁F5刷新一下网页，OK，出来了，在Label1上面显示helloworld了 &lt;BR&gt;好了，我们讲了Client端的两种形式，其他的形式比如说windows application&lt;BR&gt;web service..的形式，举一返三，只要按照前面讲的四个步骤来就行了&lt;BR&gt;这里就不罗嗦了 &lt;BR&gt;&lt;BR&gt;II:利用Microsoft Visual Studio.NET开发工具发布，调用，编写WebService &lt;BR&gt;等待VS.NET正式版出来，可真等到花儿也谢了，版本从beta1,beta2,rc1,rc2,rc3,rc4&lt;BR&gt;,rc5,到现在快要来的RTM，由于厦大接触.net的人比较少，讨论气氛没那么浓，所以&lt;BR&gt;厦大里面的ftp上估计都是beta2的，我自己机子也是beta2的，一直想从上海交大拉个&lt;BR&gt;rc5回来，最终还是没有实现,Sigh.....微软的盗版总是走在正版的前面，日前，微软&lt;BR&gt;已经允许MSDN的订户下载正式版的Visual Studio.Net。中国方面的消息：&lt;BR&gt;3月22日，微软中国公司将首先在北京召开VS.Net的发布会，届时估计有3000名开发人&lt;BR&gt;员参加此次盛会。此后会陆续的在上海、广州等10个城市召开相关活动，预计将有100&lt;BR&gt;00名开发人员参加本次活动。微软中国网站已经开始进入倒计时状态，但是相应注册&lt;BR&gt;程序并未开放。大约会等到春节假期以后才会正式开始。&lt;BR&gt;的确振奋人心!!!!!! &lt;BR&gt;又罗嗦一通，好了，开始吧!如果你看明白了前面用记事本编写,调用WebService的例子&lt;BR&gt;那么对于利用VS.net工具来开发WebService的理解就简单多了&lt;BR&gt;事实上，原理还是一样的，只不过编译的过程，微软帮你做了而已，这样你就不用了解&lt;BR&gt;wsdl,csc的参数是干嘛的，也不用那么累了，轻轻松松开发。 &lt;BR&gt;现在我们来学习怎么通过VS.net编写一个WebService&lt;BR&gt;打开Microsoft Visual Studio.NET 7.0&lt;BR&gt;文件---〉新建---&amp;gt;项目&lt;BR&gt;项目类型选择Visual C#项目&lt;BR&gt;然后选择ASP.NET web 服务&lt;BR&gt;名称为tool_service&lt;BR&gt;位置为&lt;FONT color=#0033cc&gt;http://localhost/test&lt;/FONT&gt;&lt;BR&gt;确定！&lt;BR&gt;看到了吧:)我们直接进入代码部分，双击设计的窗口&lt;BR&gt;很多东西是默认的，很多代码微软帮我们写好了&lt;BR&gt;看到下面的咚咚没有？&lt;BR&gt;//[WebMethod]&lt;BR&gt;//public string HelloWorld()&lt;BR&gt;//{&lt;BR&gt;//return "Hello World";&lt;BR&gt;//}&lt;BR&gt;把这四行前面的注销符'//'去掉，这样你就写好了一个webservice&lt;BR&gt;Ctrl+F5，看到了没有，出来了，你已经发布了一个具有一个接口&lt;BR&gt;helloworld（）的WebService了 &lt;BR&gt;好了，这里我讲一个通过web怎么来调用这个webservice&lt;BR&gt;&lt;FONT color=#0033cc&gt;http://localhost/test/tool_service/service1.asmx&lt;/FONT&gt;&lt;BR&gt;非常简单！ &lt;BR&gt;首先你建立一个asp.net web 应用程序 &lt;BR&gt;然后引用&lt;BR&gt;添加web引用 &lt;BR&gt;URL就写&lt;FONT color=#0033cc&gt;http://localhost/test/tool_service/service1.asmx&lt;/FONT&gt;&lt;BR&gt;好了，在解决方案资源管理器中我们可以发现多了web 引用&lt;BR&gt;底下是名字空间localhost,我们可以改这个名字空间，改为&lt;BR&gt;tool_service吧&lt;BR&gt;现在你可以像处理本地函数一样处理这个tool_service名字空间下面的&lt;BR&gt;类，接口了 &lt;BR&gt;我们来试试：&lt;BR&gt;我们通过工具Add一个Label,然后再Add 一个button&lt;BR&gt;编写响应button的函数&lt;BR&gt;函数内容为&lt;BR&gt;tool_service.Service1 pie=new tool_service.Service1 ();&lt;BR&gt;Label1.Text =pie.HelloWorld ();&lt;BR&gt;好了，编译一下吧&lt;BR&gt;Ctrl+F5,看看什么样子？&lt;BR&gt;出现网页了吧，呵呵，摁一下button，Label上显示helloworld了吧 &lt;BR&gt;简单吧，跟前面比较起来!! &lt;BR&gt;我也刚刚接触，非常感谢网友qqchen79大虾的大力帮助&lt;BR&gt;好了，就现丑到这里了，上面提到的都是静态调用WebService，如果&lt;BR&gt;你们对于动态调用WebService感兴趣的话，我再贴篇关于动态调用&lt;BR&gt;WebService的文章吧 &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/3098.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>MFC 写 ISAPI的一些入门级介绍</title><link>http://blog.vckbase.com/zaboli/archive/2004/11/30/1818.html</link><pubDate>Tue, 30 Nov 2004 04:18:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2004/11/30/1818.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/1818.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2004/11/30/1818.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/1818.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/1818.html</trackback:ping><description>&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/1818.html" width = "1" height = "1" /&gt;</description></item></channel></rss>