zoukankan      html  css  js  c++  java
  • .NET生成自定义wsdl

    123123123最近工作需要向第三方提供一个WebService服务,坑爹的是第三方背景牛X,我方提供的服务必须完全遵照其客户端方预先定义好了的接口,一个符号都不允许修改。

    .net平台编写的WebService由于是根据微软的标准,所以在wsdl方法名上面加上了特定的后缀,如<wsdl:port name="Service1Soap" binding="tns:Service1Soap"> 其中Soap就是默认加入的。为了完全适应调用方,这种默认方式显然是不行的,网上、网下研究了半天,最终采用了扩展SoapExtensionReflector类的方法来截获WSDL的最终生成。其方法如下:

    自定义一个继承自SoapExtensionReflector的类,重载ReflectDescription方法,在这个方法中对WSDL进行特定干预,基本上是想干啥就干啥,呵呵。

    复制代码
    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.Services.Description;
    using System.Xml.Serialization;
    using System.Xml.Schema;
    using System.Xml;
    
    public class WSDLReflector : SoapExtensionReflector
        {
            /// <summary>
            /// ws方法不做修改
            /// </summary>
            public override void ReflectMethod()
            {
    
            }
    
            /// <summary>
            /// 继承修改描述方法
            /// </summary>
            public override void ReflectDescription()
            {
    
        ServiceDescription description = ReflectionContext.ServiceDescription;
    
     foreach (Service service in description.Services)
                {
    
                    foreach (Port port in service.Ports)
                    {
    
                        port.Name = port.Name.Replace("uaService", "uaWebService");
       }
    
                }
    
            }
        }
    复制代码

    此类根据自己的实际需要编写完毕后,需要在项目Web.confing设置节点,才能应用,节点设置如下:

    复制代码
    <system.web>
        <webServices>
          <!--处理WSDL标签修改-->
          <soapExtensionReflectorTypes>
            <!--<add type ="DUS.Pub.Ws.WSDLReflector,DUS.Pub"/>-->
            <add type ="AppManager.Code.WSDLReflector,AppManager"/>
          </soapExtensionReflectorTypes> 
        </webServices> 
    </system.web>
    复制代码

    至此编译生成,本项目生成的WebService服务WSDL即可实现自定义了。

  • 相关阅读:
    GTK+ 3.6.2 发布,小的 bug 修复版本
    RunJS 新增 Echo Ajax 测试功能
    Mozilla 发布 Popcorn Maker,在线创作视频
    Sina微博OAuth2框架解密
    Mina状态机State Machine
    Mozilla 发布 Shumway —— 纯JS的SWF解析器
    Code Browser 4.5 发布,代码浏览器
    ROSA 2012 "Enterprise Linux Server" 发布
    ltrace 0.7.0 发布,程序调试工具
    Artifactory 2.6.5 发布,Maven 扩展工具
  • 原文地址:https://www.cnblogs.com/tiancai/p/13528280.html
Copyright © 2011-2022 走看看