【问题标题】:Consume web service from Class Library使用类库中的 Web 服务
【发布时间】:2011-06-13 11:50:05
【问题描述】:

我已经成功创建了一个 ASP.net 网站来调用 Soap Web 服务。

现在我需要把它变成一个类库,我可以通过 Com 从 Classic ASP 中调用它。

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什么时候应该去http://theURL.com/asmx/reguspublic.asmx?wsdl

【问题讨论】:

  • 请查看如何格式化消息。格式化指南在编辑器的右侧。例如,您需要在行尾放置两个空格作为换行符。

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


【解决方案1】:

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

所以对于“asmx”,您应该使用网络参考而不是服务参考。

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 服务是 WCF 服务还是旧版服务?
  • asmx |.net 2.0 或更早版本 = legacy, svc = wcf.
【解决方案2】:

不需要,你需要将webservice配置复制到目标可执行文件的app配置中,因为当你从库中调用webservice时,webservice会从.exe.config中寻找不存在的配置

您可以像我所做的那样以编程方式设置 web 服务 url

  AC.CCRS.WebService.MyWebServices c = new AC.CCRS.WebService.MyWebServices ();
            c.Url =... "the webservice host url

【讨论】:

    猜你喜欢
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多