如何在应用程序中添加引用 Web 服务公共结构

Posted

技术标签:

【中文标题】如何在应用程序中添加引用 Web 服务公共结构【英文标题】:How To Add Reference a Webservice public Struct in App 【发布时间】:2011-03-04 03:12:41 【问题描述】:

最初发表于: http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_21355401.html

我有一个包含两个项目的解决方案:一个 web 服务项目和一个 web 应用程序项目,它具有对 web 服务项目的 web 引用(web 应用程序项目只是一个测试用例)。

我的 web 服务项目包括一个包含多个公共结构的类文件。我可以在 webservice 项目本身中很好地使用这些。但是,我无法从 Web 应用项目中查看或引用这些结构。

当您向 Web 服务添加 Web 引用时,您实际上获得了 Web 服务的“对象”版本,这不是真的吗?在这种情况下,我希望能够访问网络服务的任何公共成员。

我之前创建了引用关联项目的服务,当我使用该服务时,我可以访问引用的项目及其成员。为什么我无法访问与服务在同一个项目中的类文件?

Web 服务 (asmx) 和类文件 (cs) 的命名空间是相同的。在网络应用程序中,我有一个用于网络参考的 using 语句。我确实可以从 asmx 访问 webmethods,但不能访问关联的类文件及其公共成员......

我也遇到了同样的问题,谁能告诉我解决办法是什么? 我想发送一个在 WebService 上公开可用的参数结构列表。

【问题讨论】:

【参考方案1】:

首先,对于所有新开发,您应该使用 WCF 而不是 ASMX Web 服务。

其次,当您添加 Web 引用(或者,最好是服务引用)时,您将获得 Web 服务公开的所有类型的代理副本。如果服务返回一个包含某种结构类型的公共属性的类,那么您将获得返回的类的代理副本,以及该结构类型的代理副本。

顺便说一句,你会得到一个类,而不是结构。 “结构”的概念不会跨越服务边界。

【讨论】:

“您应该使用 WCF 而不是 ASMX Web 服务”。为什么?据我所知,WCF 对 Visual Studio 来说是一个昂贵的补充。 @chapluck:你从哪里得到那个的想法? WCF 自 3.0 起成为 .NET 的一部分,是 .NET Remoting 和 ASMX Web 服务的替代品,这两者实际上都已失效(没有增强功能,只有关键的错误修复)。请参阅此 MSDN 文章或任何其他有关 ASMX 的文章。请参阅WCF Developer Center,了解大多数 .NET 开发人员四年来所了解的内容。 朋友,你能告诉我在哪里可以找到“为什么”的参考资料吗?那。您已经指出在 XML Web 服务中使用参数字符串来接收?感谢所有回复的 @Ph:我不知道你在找什么参考资料。也许WCF Developer Center 会有所帮助。

以上是关于如何在应用程序中添加引用 Web 服务公共结构的主要内容,如果未能解决你的问题,请参考以下文章

添加服务引用仅适用于 localhost wcf 服务

vscode 如何添加 外部web服务器

如何在 Visual Studio 2008 中添加 /_vti_bin/Admin.asmx webservice 作为服务引用

如何从自定义类添加对我的 Web 服务代理的引用

添加对 ASP.NET Web API 服务的服务引用

ASP.NET Web Api 和数据协定