欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

对webservice和wsdl比较了解的进来帮助一上

更新时间: 2014-01-05 02:00:24 责任编辑: Author_N1

 

对WebService和WSDL比较了解的进来帮助一下
场景:
有两线上网站A和调,其中A调用B提供的WebService服务.
因为某种原因,B不能继续提供服务.

要求:现要求用一服务来完全替代B提供的服务.

限制:A网站不能动,除了配置文件中的WebService地址可变化,其它不能有什么何变化.

可用资源:
1.一个A的本地源代码,已确定和线上A网站运行版本不一致,其中有一个调用B服务生成的本地代理和1个WSDL文件
2.一个线上的A网站COPY(发布版本,非源代码,可反编译,未混淆,可在本地WebServer运行)

已尝试:使用Wsdl.exe 对wsdl文件生成服务器端代码(接口),并实现.提供服务.
在使用Wsdl有一个error(具体请Wsdl.exe /si "path")

把本地A网站配置到新地址,debug可以发现,能够调入到新的服务并正确执行,也能返回结果,
但是在A接收到NULL.

在  代理类中方法中: object[] results = this.Invoke("method", new object[]{in0,in1});
results为Null,但是服务端已输出了结果(debug可知,或直接测试服务也可知)


已检查:服务器生成的接口和实现的XML特性的namespace和反编译(线上A)的代理的XML的namespace.

请大家畅所欲言,有能帮助者至少200分,QQ282092961

附:WSDL


--参考方法--
不太明白这句话的意思:
在 代理类中方法中: object[] results = this.Invoke("method", new object[]{in0,in1});
results为Null,但是服务端已输出了结果(debug可知,或直接测试服务也可知)

用工具直接生成的代理类,注意nillable="true"表示该字段为可空类型
[XmlElement(IsNullable = true)]
--参考方法--
另外可以尝试第三方的工具,比如SoapUI 4.0,代码类别选择C#
--参考方法--
又看了一下你的帖子,那么目前可以确定的是,你的代理类是没有问题的
调到了服务,并且服务端返回了数据,并不代理服务端返回的数据(XML)结构是代理能够正确解析的
建议:将你生成的服务WSDL和你之前的WSDL用代码对比工具进行差异对比(肉眼估计会累死你)
--参考方法--
并不代表服务端返回的数据(XML)结构是代理能够正确解析的

--参考方法--
既然你可以反编译,那么拿出A的有关服务客户端代理里边的代码,是数据的class就用数据的class,是功能调用的class就把它有关
:System.ServiceModel.ClientBase<W>,....
父类声明删掉,再把几个实例化方法删掉,剩下功能调用的声明代码。

这就有了完全没有问题的服务器端声明的源代码!而不用看WSDL文本。
--参考方法--
哦当然啦,在你的新的服务器程序上先引入这个WSDL文件生成所谓的客户端代理程序,然后按照上面说的去修改,相信用不了几十分钟就能整理出一个完整的服务端代码(当然不包括功能实现)。
--参考方法--
例如说
    public class Weather
    {

        public RespInfo updateWeatherInfo(InfoHeader in0, WeatherInfoBean in1)
        {
            throw new NotImplementedException();
        }

        public RespInfo2someListMap findWeatherInfoList(InfoHeader in0, NetWorkConditions in1)
        {
            throw new NotImplementedException();
        }

        public RespInfo addWeatherInfo(InfoHeader in0, WeatherInfoBean in1)
        {
            throw new NotImplementedException();
        }
    }

    public partial class WeatherInfoBean 
    {

        public string agriTips{get;set;}

        public string cdbId{get;set;}
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:00:24
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/4426/
本文WWW.DOC100.NET DOC100.NET版权所有。