最近工作需要向第三方提供一个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. 【物联网应用与维护】基于SQL sever 2008 R2的数据库定时处理

    --SQLServer : --1.打开[SQL Server Management Studio],在[对象资源管理器]列表中选择[SQL Server 代理]: --2.鼠标右击[SQL Serv ...

  2. SVN的部署及分支等方法

    1.本地Repository的创建 repository的创建很简单,假设我要在D:\TortoiseSVN\TestRepository目录中创建repository,只需 右键TestReposi ...

  3. 转发 java数据结构之hashMap详解

    概要 这一章,我们对HashMap进行学习.我们先对HashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashMap.内容包括:第1部分 HashMap介绍第2部分 HashMa ...

  4. 使用AdvinceInstaller把exe或者msi重新包装成为msi静默安装程序

    最近在学习installShelled打包.net做的软件,其中mysql数据库的静默安装脚本不会写,本人新手勿喷.在不会写脚本的方式下,偶然间看见了这个AdvinceInstaller可以吧.exe ...

  5. cocos多点触控实效注意事项

    一定要设置AppController.mm的 [eaglView setMultipleTouchEnabled:YES];

  6. Qt之qInstallMessageHandler(重定向至文件)

    简述 在Qt之qInstallMessageHandler(输出详细日志)一节中,我们讲解了如何使用自定义消息处理程序输出调试信息,而且可以很直观.很方便的得到输出代码所在的文件.函数.行号等信息. ...

  7. 数据分析:中国高校更名历史 Python

    上周领了新任务,做国内高校改名历史的统计,这个挺有意思,以下是我任务完成过程,和大家分享. 一. 数据收集 数据需求:目前已有高校校名,各高校改名历史记录 高校校名数据来源:尝试从高校排名网站(iPI ...

  8. jquery时间控件datepicker

    配置文件 $("#joinedTime").datepicker({ inline: true, yearRange: "1996:2016", showBut ...

  9. nodeType、nodeName和nodeValue

    首先了解一下DOM中有三大节点,分别是 元素节点,文本节点,属性节点 元素节点:构成了DOM的基础.文档结构中,<html>是根元素,代表整个文档,其他的还有<head>,&l ...

  10. RadioButtonList的使用

    前台绑定: <asp:RadioButtonList ID="hlBatchYuJi" runat="server" RepeatColumns=&quo ...