【问题标题】:Make visual studio understand the return type of a web service is the same as an existing type让 Visual Studio 了解 Web 服务的返回类型与现有类型相同
【发布时间】:2012-01-10 17:28:38
【问题描述】:

我已经用谷歌搜索了很长时间,但找不到我所面临问题的答案。情况如下:

我有一个 .Net Web 服务(不是 wcf 服务,而是一个老式的 Web 服务),其中有一个 Web 方法,它返回一个 X 类型的对象。

现在,当我从不同的 .Net 项目创建对此 Web 服务的服务引用时,Visual Studio 将生成一个代理类(在 reference.vb 中),该类中 Web 方法的返回类型是该代理类(例如,类型 Y)而不是类型 X。

问题是,类型 X 是在存在于 Web 方法两端的外部引用中声明的类型。有什么办法吗(服务本身应该是一个 Web 服务,但我不在乎引用是“服务引用”还是“Web 引用”)我可以让 Visual Studio 明白没有必要创建一个代理类,它可以使用现有类型作为方法的返回类型吗?

我知道服务引用可以自动映射类型(您可以在创建服务引用时设置这些设置)。但是,这似乎只在创建对 wcf 服务的服务引用时才有效,而不是对普通的 .net Web 服务

更新:

似乎我需要以某种方式使 Visual Studio 与类型的命名空间相匹配。 John Saunders 向我提示了 xmltype 属性,我可以使用它来指定类型的完整命名空间。如果可行,我会尝试。

我还考虑了 Visual Studio 如何匹配课程。似乎在任何地方都没有关于 Web 服务的 wsdl 中的命名空间的信息(假设工作室使用 wsdl 作为生成引用的输入)那么工作室如何匹配类型?

更新2: 我尝试使用 xmltype 来映射命名空间。我不确定要使用什么命名空间(实际 ClrNamespace 的 uri 类型),所以我都尝试了。使用 uri 命名空间,我能够在 svcmap 中创建命名空间映射,但这会导致 reference.vb 文件中的代码在额外的命名空间内生成,而不是让 VS 想要映射类型。有什么新想法吗?真的有这么难吗?

【问题讨论】:

  • WCF 是普通的 .net web 服务。 ASMX 服务是旧的遗留技术。
  • 您是否尝试在“添加服务引用”对话框中指定“重用类型”?程序集是否包含您的客户端应用程序引用的共享类型?由于命名空间,您可能仍然遇到问题。
  • 这只是一个技术问题,原来的问题仍然存在
  • 服务器和客户端都引用同一个程序集,包含所需的类型。默认情况下启用重用类型,但它似乎不了解类型之间的联系。我试图让系统理解这两种类型是相同的。不过,我还没有对命名空间做过任何事情......
  • 在我的谷歌搜索中,我遇到了一些关于命名空间映射的提及,但我无法对此做出正面或反面,而且似乎不适用于我的情况。 Web 服务确实与方法的返回类型位于不同的命名空间中

标签: asp.net visual-studio-2010 web-services


【解决方案1】:

似乎根本不可能做到这一点。简短的回答:使用 wcf 服务引用并使用服务中使用的类型创建一个共享库,并通过引用在服务和应用程序中引用它们

【讨论】:

    猜你喜欢
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 2023-03-03
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    相关资源
    最近更新 更多