从类库中使用Web服务

时间:2011-06-13 11:50:05

标签: c# wcf web-services visual-studio-2010

我已经成功创建了一个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} }

2 个答案:

答案 0 :(得分:5)

服务参考适用于Windows Communication Foundation(WCF)服务和WCF数据服务,其中使用“遗留”或asmx Web服务时使用Web引用。

因此,对于'asmx',您应该使用Web引用而不是服务引用。

http://alexduggleby.com/2008/08/24/add-web-reference-instead-of-service-reference-in-visual-studio-2008/

关于错误:
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