.Net WebService 添加引用其它项目的.wsdl,指定URL后报错

时间:2022-06-07 21:06:37
新建WebService后,添加Web服务引用, 输入别的项目组发布好以.wsdl结尾的WebService,来发收报文。

别的项目组的WebService也是在UAT环境,所以就把URL配置到了WebConfig中,方便后期修改

使用的时候重新赋值URL。

但会报

System.InvalidOperationException: 客户端发现响应内容类型为“”,但应为“text/xml”。
请求失败,错误信息为:
--

这个错误

如果不单独指定URL,连接就没有问题,正常发送。

我又特意建个了.net以后缀以.asmx结尾的服务端,部署到我们UAT上,在本地做客户端连接,并且指定了URL。连接正常。

为什么引用.wsdl的webService 并且指定URL后会 无法解析了,不认识了?

是哪里配置的问题吗?求高手解答,谢谢! 

7 个解决方案

#1


要看你引用的是什么地址。
服务引用地址不能保存在CONFIG文件中吧
好像只能用绝对路径

#2


wsdl是个啥,应该只是一本说明书吧,真正运行代码还是要 asmx, 对方是不是 .net webservice。

#3


对方不是.net的。 他们给的是.wsdl地址

#4


没看到过其他语言写的webservice, 在.net webserivce中,查看服务说明有点类似 wsdl, 在最后部分有这样的东西楼主参考一下。

<wsdl:port name="WeatherWSSoap" binding="tns:WeatherWSSoap">
<soap:address location="http://www.webxml.com.cn/WebServices/WeatherWS.asmx"/>
</wsdl:port>
<wsdl:port name="WeatherWSSoap12" binding="tns:WeatherWSSoap12">
<soap12:address location="http://www.webxml.com.cn/WebServices/WeatherWS.asmx"/>
</wsdl:port>
<wsdl:port name="WeatherWSHttpGet" binding="tns:WeatherWSHttpGet">
<http:address location="http://www.webxml.com.cn/WebServices/WeatherWS.asmx"/>
</wsdl:port>
<wsdl:port name="WeatherWSHttpPost" binding="tns:WeatherWSHttpPost">
<http:address location="http://www.webxml.com.cn/WebServices/WeatherWS.asmx"/>
</wsdl:port>

#5


1、添加webservice引用,和配置文件是否配置url,木有啥关系
2、如果要动态服务器url,你用wsdl生成代理类,重载构造函数使用配置文件的url

#6


引用 5 楼 lovelj2012 的回复:
1、添加webservice引用,和配置文件是否配置url,木有啥关系
2、如果要动态服务器url,你用wsdl生成代理类,重载构造函数使用配置文件的url


假如某个WebService在两个服务器上,开发时添加web服务引用使用的是地址1,后来换到其它环境,地址1不通了。需要改为使用地址2.
代码里面直接new 了他们地址给出方法的某个类,
然后直接指定了 实力类.Url=webconfig配置的地址(这时修改为了地址2)
此处的Url指定后web服务引用的地址不是地址2吗?

#7


此处的Url指定后web服务引用的地址不是地址2吗? 
上面的最后一句说错了。
应该是跟别的项目组webService通信的地址

#1


要看你引用的是什么地址。
服务引用地址不能保存在CONFIG文件中吧
好像只能用绝对路径

#2


wsdl是个啥,应该只是一本说明书吧,真正运行代码还是要 asmx, 对方是不是 .net webservice。

#3


对方不是.net的。 他们给的是.wsdl地址

#4


没看到过其他语言写的webservice, 在.net webserivce中,查看服务说明有点类似 wsdl, 在最后部分有这样的东西楼主参考一下。

<wsdl:port name="WeatherWSSoap" binding="tns:WeatherWSSoap">
<soap:address location="http://www.webxml.com.cn/WebServices/WeatherWS.asmx"/>
</wsdl:port>
<wsdl:port name="WeatherWSSoap12" binding="tns:WeatherWSSoap12">
<soap12:address location="http://www.webxml.com.cn/WebServices/WeatherWS.asmx"/>
</wsdl:port>
<wsdl:port name="WeatherWSHttpGet" binding="tns:WeatherWSHttpGet">
<http:address location="http://www.webxml.com.cn/WebServices/WeatherWS.asmx"/>
</wsdl:port>
<wsdl:port name="WeatherWSHttpPost" binding="tns:WeatherWSHttpPost">
<http:address location="http://www.webxml.com.cn/WebServices/WeatherWS.asmx"/>
</wsdl:port>

#5


1、添加webservice引用,和配置文件是否配置url,木有啥关系
2、如果要动态服务器url,你用wsdl生成代理类,重载构造函数使用配置文件的url

#6


引用 5 楼 lovelj2012 的回复:
1、添加webservice引用,和配置文件是否配置url,木有啥关系
2、如果要动态服务器url,你用wsdl生成代理类,重载构造函数使用配置文件的url


假如某个WebService在两个服务器上,开发时添加web服务引用使用的是地址1,后来换到其它环境,地址1不通了。需要改为使用地址2.
代码里面直接new 了他们地址给出方法的某个类,
然后直接指定了 实力类.Url=webconfig配置的地址(这时修改为了地址2)
此处的Url指定后web服务引用的地址不是地址2吗?

#7


此处的Url指定后web服务引用的地址不是地址2吗? 
上面的最后一句说错了。
应该是跟别的项目组webService通信的地址