c# Webservice 生成代理类并在客户端调用

生成:

VS2005命令:

开始》运行》CMD

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin>wsdl /language:c# /n:XYS.MISS.Photo.PhotoAdmin /out:d:\Temp\TestService.cs D:\Temp\TestService.wsdl

在d:/Temp下就会产生一个TestService.cs 文件

默认为C#语言
/language:VB 为输出语言
/n:mynamespace namespace
/out:myProxyClass.cs 输出文件名

注意:D:\Temp\TestService.wsdl 是wsdl路径,可以是url路径:http://localhost/Temp/Test.asmx?wsdl

 

VS2008命令: 

Microsfot visual studeio 2008》Visual Studio Tools》D:\Program Files\Microsoft Visual Studio 9.0\VC>

svcutil.exe http://localhost:1101/UpdateService.svc /serializer:DataContractSerializer

在D:\Program Files\Microsoft Visual Studio 9.0\VC 文件夹下自动生成一个UpdateService.cs文件和output.config文件,把output.config对应结点

<system.serviceModel>下的内容copy到要调用服务的web.config下面即可

 

PS:

调用WebService很多人喜欢直接添加Web引用,事实上,如果你的项目里只有一个Web服务那么可能不会出现什么问题,但是如果你的项目里引用两个以上的Web服务,并且这两个服务里可能存在相同的类名,这时候可能就会出现问题。比较保险的办法就是用代理类的方式,把多个服务中相同的部分合并起来。

 

调用:

把TestService.cs 方法拷贝到项目中并可以调用,在Default.cs代码中调用:

XYS.MISS.Photo.PhotoAdmin aa = new XYS.MISS.Photo.PhotoAdmin();  //根据生成代码类时设定的名称空间下找到类,并实例化
 string hospitalName=actionPhoto.GetHospitalName();         //调用webService代理类中的方法

 

说明:并且可以动态配置WebService地址,比如以下是代理类:

 public partial class WebService : System.Web.Services.Protocols.SoapHttpClientProtocol {
       
        private System.Threading.SendOrPostCallback HelloWorldOperationCompleted;
       
        /// <remarks/>
        public WebService() {
            this.Url = Class1.websvUrl+"/WebService.asmx";   //构造函数中,这里可以动态配置WebServiceUrl地址
        }
       
        /// <remarks/>
        public event HelloWorldCompletedEventHandler HelloWorldCompleted;
       
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/HelloWorld", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public string HelloWorld() {
            object[] results = this.Invoke("HelloWorld", new object[0]);
            return ((string)(results[0]));
        }

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值