中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
运行时如何改变Web服务的位置
作者:刘彦青 时间:2006-09-29 11:22 出处:ccidnet.com 责编:月夜寒箫
              摘要:运行时如何改变Web服务的位置
简介

在开发web服务的客户端软件时,我们通常通过指定.asmx文件的URL在web服务中添加一个web引用地址。在VS.NET中添加web服务会生成必要的代理对象。然而,经常会有这样的情况出现,在添加web引用地址后,web服务又移到了其他地方。在这种情况下,最简单的自理方法是重新创建代理对象。但如果是已经部署了web服务的客户端软件,又发生了这种情况,那么使URL成为可配置的就是一种比较好的方式了,这样,即使原来的web服务发生了移动,客户端软件也无需重新编译。在本篇文章中,我们将讨论这一问题。

创建web服务

为了配合我们的讨论,我们将创建只有一个方法的简单web服务。按下面的步骤创建该web服务:

  • 在VS.NET中创建一个新的C# web服务工程。
  • 打开缺省的.asmx文件,并在其中添加下面的代码:
                    using System;
                    using System.Web.Services;
                    namespace HelloWorldWS
                    {
                    public class CHelloWorld :
                    System.Web.Services.WebService
                    {
                    [WebMethod]
                    public string GetHelloWorld()
                    {
                    return "Hello World From CHelloWorld";
                    }
                    }
                    }
                    
  • 如上所述,该web服务类(CHelloWorld)中只包含有一个被称作GetHelloWorld()的方法,它返回一个字符串。
  • 在工程中添加另一个.asmx文件。
  • 打开该文件,并将它修改成下面的形式:
                    using System;
                    using System.Web.Services;
                    namespace HelloWorldWS
                    {
                    public class CHelloWorldBackup :
                    System.Web.Services.WebService
                    {
                    [WebMethod]
                    public string GetHelloWorld()
                    {
                    return "Hello World From CHelloWorldBackup";
                    }
                    }
                    }
                    
  • 该类与上一个类相似,只是名字成了CHelloWorldBackup。另外它返回的字符串与GetHelloWorld()也不同,因此能够识别方法调用。
  • 至此,我们就开发好了二个web服务,并编译该工程。

创建web服务客户端应用程序

下面为我们的web服务创建一个简单的web客户端软件。

  • 在VS.NET中创建一个新的ASP.NET web应用程序。
  • 该应用程序将有一个缺省的web表单。在我们添加在web服务中添加引用所需要的代码前,右击应用节点,选择“添加web引用”,这一点与在开发正常的web服务时相同。添加web引用将会生成代理web服务对象的代码。
  • 在web表单上添加一个按钮,并在该按钮的Click事件中添加下面的代码:
                    private void Button1_Click
                    (object sender, System.EventArgs e)
                    {
                    localhost.CHelloWorld proxy=new localhost.CHelloWorld;
                    Response.Write(proxy.GetHelloWorld());
                    }   
  • 上面的代码显示了在正常情况下我们如何调用web服务,web引用中包含着与web服务位置有关的信息。
  • 在部署该客户端软件后,如果再改变了.asmx文件,就会发生错误。要避免发生这种情况,需要将上面的代码修改成如下所示的代码:
                    private void Button1_Click
                    (object sender, System.EventArgs e)
                    {
                    localhost.CHelloWorld proxy=new localhost.CHelloWorld;
                    proxy.Url="http://localhost/webserviceurlandtimeout/HelloWorld.asmx";
                    Response.Write(proxy.GetHelloWorld());
                    }   
  • 在上面的代码中,我们将代理类的Url属性设置为要求的.asmx文件。我们可以将该URL存储在web.config文件的小节,在运行时再来访问它。如果改变了web服务,我们只要修改web.config中的这个URL即可。
  • 下面是实现上述目的的代码:
                    private void Button1_Click(object sender, System.EventArgs e)
                    {
                    localhost.CHelloWorld proxy=new localhost.CHelloWorld;
                    proxy.Url=GetURL();
                    Response.Write(proxy.GetHelloWorld());
                    }
                    public string GetURL()
                    {
                    return ConfigurationSettings.AppSettings["webserviceurl"];
                    }
                    

     

     

在本例中我们的web.config如下所示:

            <appSettings>
            <add
            key="webserviceurl"
            value="http://localhost/webserviceurlandtimeout
            /HelloWorldBackup.asmx" />
            </appSettings>

需要注意的是,要使上面的代码能够正确地运行,web服务和web方法的输入参数必须相同。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有