• C#根据WSDL文件生成WebService服务端代码


    转自:http://www.cnblogs.com/liyi93/archive/2012/01/30/2332320.html

    虽然现在已经进入了.NET FrameWork 4.0的时代,WebService也已经逐渐被淘汰,取而代之的是WCF。

    但在工作中难免遇到需要兼容旧版本程序和按照以前的文档进行开发。

    一般一个已经实现功能的WebService会发布自己的WSDL文件,供客户端调用生成代理类。

     但有时是先有server与client交互的接口定义(WSDL)文件,然后由server和client端分别写程序,一个提供web服务,一个使用web服务。

     最近,我也遇到了这个问题。由于业务方仅提供了WSDL文件并确定了其规范,需要我们开发服务端供调用。

    1、使用VS2010提供的工具wsdl.exe由WSDL文件生成cs文件

         使用wsdl.exe的/serverInterface选项(或缩写的 /si)指定输入的wsdl文件(注意,如果要转换的wsdl文件中import了其他wsdl文件,则所有文件都应列出,包括使用到的xsd文件也应列出)。输出将是 一个代码文件(默认是C#的,如果需要别的语言,参考MSDN中wsdl.exe的使用说明),其中包含每个 wsdl 绑定的接口。

       

       示例:假设有ServerInterfaceSample.wsdl 

        wsdl.exe /si ServerInterfaceSample.wsdl

        如果使用Service.xsd作为schema文件,则改为

        wsdl.exe /si ServerInterfaceSample.wsdl  Service.xsd

        生成代码如下:

    //------------------------------------------------------------------------------
    // <auto-generated>
    //     此代码由工具生成。
    //     运行时版本:4.0.30319.239
    //
    //     对此文件的更改可能会导致不正确的行为,并且如果
    //     重新生成代码,这些更改将会丢失。
    // </auto-generated>
    //------------------------------------------------------------------------------
    
    using System;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.Xml.Serialization;
    
    // 
    // 此源代码由 wsdl 自动生成, Version=4.0.30319.1。
    // 
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")]
    [System.Web.Services.WebServiceBindingAttribute(Name="WebServiceSoap", Namespace="http://tempuri.org/")]
    public interface IWebServiceSoap {
        
        /// <remarks/>
        [System.Web.Services.WebMethodAttribute()]
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/sendSMS", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        long sendSMS(InfoHeader header, string sessionId, string sender, string smsContent, string receiverList, string productCode, string pseudoFlag);
    }
        
    

      2、使用以上生成的文件进行修改,实现你的WebService方法即可.

  • 相关阅读:
    在Hibernate中不区分大小写查询
    Windows下如何查看某个端口被谁占用
    swing限制文本框只能输入数字和大写字母
    VC6命令⾏编译配置
    springboot获取application.yml的信息
    VisualStudio 2019 离线安VisualStudio 2019 离线安装包 | 完整负载.独立负载.单个组件装包 | 完整负载.独立负载.单个组件
    java根据输入的文件路径和文件名,web服务器返回一个输出流
    找不到或无法加载主类
    JTable表格关联TableRowSorter类实现排序功能
    正则转换驼峰和下划线
  • 原文地址:https://www.cnblogs.com/biye/p/3922328.html
Copyright © 2020-2023  润新知