我已经成功创建了一个ASP.net网站来调用Soap Web服务。
现在我需要把它变成一个类库,我可以通过Classic从Classic调用它。
Consume web service in asp.net app from a class library上的这篇文章说我需要添加Web服务,使用“添加服务引用”而不是“添加Web引用”来添加对Web服务的引用。
当我尝试这样做时,我收到错误:
元数据包含一个引用 无法解决: 'http://theURL.com:8008/asmx/publicServiceAddress.asmx?wsdl'。
下载时出错 'http://theURL.com:8008/asmx/publicServiceAddress.asmx?wsdl'。
无法连接到远程服务器 连接尝试失败,因为 关联方没有正确 一段时间后回复,或 建立连接失败,因为 连接主机未能响应 77.95.80.35:8008元数据包含无法解析的引用: 'http://theURL.com/asmx/publicServiceAddress.asmx'。 元数据包含一个引用 无法解决: 'http://theURL.com/asmx/publicServiceAddress.asmx'。
如果服务是在。中定义的 目前的解决方案,尝试建立 解决方案并添加服务 再次参考。
...但是当我点击高级然后再添加“添加Web引用”时,我可以添加它。
问题:
1)是否有必要使用“添加服务引用”而不是“添加Web引用”?
2)为什么,有什么区别?
3)这个错误的潜在原因是什么,以及如何解决这个问题,例如我不知道为什么它应该移到8080以寻找WSDL http://theURL.com:8008/asmx/reguspublic.asmx?wsdl何时应该转到{{3} }
答案 0 :(得分:5)
服务参考适用于Windows Communication Foundation(WCF)服务和WCF数据服务,其中使用“遗留”或asmx Web服务时使用Web引用。
因此,对于'asmx',您应该使用Web引用而不是服务引用。
关于错误:
WCF服务公开元数据,使其能够与不同类型的端点和数据进行交互。 .NET 2.0 asmx webservices只有一个端点@SOAP。因此'asmx'Web服务不会暴露因错误发生的任何元数据。
答案 1 :(得分:1)
不,它不需要,你需要将webservice配置复制到目标可执行文件的app配置,因为当你从库中调用webservice时,webservice会查找不存在的.exe.config配置
您可以像我所做的那样以编程方式设置webservice网址
AC.CCRS.WebService.MyWebServices c = new AC.CCRS.WebService.MyWebServices ();
c.Url =... "the webservice host url