【问题标题】:troubles with generating a service reference生成服务参考的麻烦
【发布时间】:2011-07-26 16:34:48
【问题描述】:

我必须构建一个消耗大量 Web 服务的 .Net 应用程序。此 Web 服务在 weblogic 下运行。 Web 服务的 WSDL 提到了描述类型的 XSD 文件。

当我尝试使用 VS studio 添加“服务参考”时,我遇到了一些错误:

警告 1 自定义工具警告:无法导入 wsdl:portType 详细信息:运行 WSDL 导入扩展时引发异常:System.ServiceModel.Description.XmlSerializerMessageContractImporter 错误:找不到目标命名空间“http://mycustomer/ws/types”的架构。 错误源的 XPath://wsdl:definitions[@targetNamespace='http://mycustomer/ws/wsdl']/wsdl:portType[@name='lbWebPT'] C:\Projects\mycustomerproject\Service References\ClientService\参考.svcmap

用于 wsdl 文件的 portType、Binding 和 port 元素的 X3。

我猜这是因为 xsd 文件中定义的类型缺失。为了解决这个错误,也为了避免重复代码,我在我的 xsd 文件上运行以下命令(在预构建事件命令行中):

"%ProgramFiles%\Microsoft SDKs\Windows\v7.0A\bin\xsd.exe" "$(ProjectDir)xsdofmycustomer.xsd" /namespace:"MyCustomer.WebServices.Types" /c /o:"$(项目目录)。”

此命令成功生成了一个代码文件,其中包含XmlRootAttribute 中定义的类型和正确的命名空间。

此代码已放在专用的 VS 项目中。我试图引用服务的项目引用了这个项目。但是,错误仍在发生。

我可以做些什么来解决我的问题?

PS:我能够使用svcutil.exe pathtowsdl pathtoxsd 部分解决我的问题,但我希望能够在 VS 中维护引用以方便使用。

谢谢

【问题讨论】:

    标签: wcf visual-studio-2010 .net-4.0 svcutil.exe


    【解决方案1】:

    我不喜欢使用项目服务引用,因为代理生成器默认插入的内容很麻烦。但是,如果您真的想为您的项目使用服务引用,那么您需要将 wsdl 和 xsd 文件的内容合并到一个文件中。服务参考 UI 假定生成代理所需的所有数据都在您提供的文件中。如您所见,SvcUtil 更加灵活。您应该能够将 wsdl:import 元素替换为包含 xsd 文件内容的 wsdl:types 元素(当然没有 xml 指令)。接下来,您在“添加服务引用”对话框的地址文本框中输入文件的路径,您应该可以使用 Visual Studio 提供的代理服务。

    【讨论】:

    • 这是一个有趣的观点。我的问题是更新服务引用是在 VS 中一键单击。移动到批处理文件,重建引用并不像看起来那么痛苦......我只是想让其他开发人员对未来的发展具有可读性的代码和项目。谢谢
    • 我喜欢基于 ChannelFactory 的客户端代码,其中 T 是标有 ServiceContract 属性的接口。基于 SvcUtil 的代码将为您生成带有 ServiceContract 标记的接口和所有相关的 DataContract 标记类。如果您不介意忽略 SOA 原则,您可以在客户端和服务之间共享实际的服务合同组件并将其用于 T。我们编写的通用服务调用程序类处理进行服务调用并处理故障服务失败时的通道条件。
    • 通常不需要结合 WSDL 和 XSD 文件来使用“添加服务引用”,尽管在某些情况下这可能是必要的。
    • 你是对的,添加服务参考将自动处理单独的 WSDL 和 XSD。然而,在这个问题的上下文中,引用外部 XSD 文档的方式似乎不适用于史蒂夫。我建议直接嵌入 XSD,而不是尝试制作对它们的正确引用,从而“解决了难题”。感谢您注意到 WSDL 和 XSD 文档不需要为未来的答案读者组合!
    猜你喜欢
    • 1970-01-01
    • 2012-07-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 2015-01-29
    • 2010-11-15
    • 1970-01-01
    相关资源
    最近更新 更多