最近工作需要向第三方提供一个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即可实现自定义了。

.net自定义WebService WSDL的更多相关文章

  1. webservice第二篇【自定义webservice服务、soa、uddi概念、soap协议】

    自定义webservice服务 我们在上一章节中已经使用wsimport生成本地代理来调用webservice的服务了,其实我们自己写的web应用程序也是可以发布webservice的 我们发布了we ...

  2. webservice wsdl接口配置与调用

    准备包 WebRoot/WEB-INF/lib/axis2-adb-1.6.2.jarWebRoot/WEB-INF/lib/axis2-ant-plugin-1.6.2.jarWebRoot/WEB ...

  3. webservice wsdl axis2报错 Provider com.bea.xml.stream.MXParserFactory not found

    错误信息: Exception in thread "main" javax.xml.stream.FactoryConfigurationError: Provider com. ...

  4. 分享:根据webservice WSDL地址自动生成java调用代码及JAR包

    分享:根据webservice WSDL地址自动生成java调用代码及JAR包使用步骤:一.安装java 并配置JAVA_HOME 及 path二.安装ANT 并配置ANT_HOME三.解压WsdlT ...

  5. PHP调用webService WSDL 接口发送邮件

    1.什么是 webService WSDL?  webService WSDL 暴露一些接口给第三方调用,在底层会转化成一个HTTP请求,主要是不同语言之间为了通讯的一个协议,比如发送邮件的系统是用J ...

  6. WebService wsdl没有types的问题

    刚学WebService就遇到一个问题,按视屏敲的代码,它生成的wsdl页面与自己的不一样,我的没有types,结构完全不同了 This XML file does not appear to hav ...

  7. webservice wsdl 生成服务

    由于之前的示例是在当前项目下发布的server,也是在当前项目下访问的server发布的webservice.但在实际应用中,我们的服务端往往是和客户諯分离的,甚至它们是不同的项目中不同的人写的.而像 ...

  8. SharePoint 列表项通过自定义WebService读取

    简述:给其他系统提供集成,发现SharePoint自带的WebService各种不好使,索性就自己写一点,也当做自己学习的记录了.当然内容比较简单,希望大侠们不要介意,也不要骂我啊.好了,进入正题吧. ...

  9. 来看下,C# WebService WSDL自动生成代码,数组参数的BUG。。。ArrayOfString

    ArrayOfString ArrayOfString ArrayOfString 解决C#客户端 ArrayOfString 参数问题.(希望搜索引擎能搜到,帮你解决神奇的ArrayOfString ...

随机推荐

  1. BackTrack5-r3任务栏显示网络图标及自定义DNS

    任务栏显示网络连接图标:安装NM工具,在BT终端中执行:apt-get install network-manager按y继续执行,显示:ldconfig deferred processing no ...

  2. JUnit4参数的使用

    用JUnit4进行参数化测试 参数化测试是一个JUnit 3不具备的功能. 基本使用方法 @RunWith 当类被@RunWith注解修饰,或者类继承了一个被该注解修饰的类,JUnit将会使用这个注解 ...

  3. 第三个Sprint总结

    工作进展:项目基本已经完成 工作状况:                                      

  4. MTP in Android详解

    MTP in Android详解 最近好长一段时间没有做笔记了,今天主要学习一下MTP相关的知识. MTP的全称是Media Transfer Protocol(媒体传输协议),它是微软公司提出的一套 ...

  5. JSON入门

    一.简介     1.描述         1)JavaScript 对象表示法(JavaScript Object Notation) 2)存储和交换文本信息的语法.类似 XML 3)比 XML 更 ...

  6. DBN 入门学习资料整理

    建议按序阅读 1.Deep Learning 概述 Deep Learning(深度学习)学习笔记整理系列 : http://blog.csdn.net/zouxy09/article/details ...

  7. Java设计模式(十二) 策略模式

    原创文章,同步发自作者个人博客,http://www.jasongj.com/design_pattern/strategy/ 策略模式介绍 策略模式定义 策略模式(Strategy Pattern) ...

  8. 关于使用flexible.js自适应页面,发现文字很多时,字体会变大的问题的原因和解决方案

    具体自己还没研究过 先把别人写的文章收藏一下 主要是webkit 有一个Font Boosting特性,当文字小到一定程度的时候会触发这个属性,放大字体来提升页面的阅读感 . http://www.3 ...

  9. 特别实用而且功能强大的attributedText属性

    UILabel *sendNameLB = [[UILabel alloc]initWithFrame:CGRectMake(, , , )]; NSString * string = @" ...

  10. 实现AJAX的异步交互的步骤

    <input type="button" value="异步请求"id="btn"> <script> 实现ajax ...