【问题标题】:WCF, wsHttpBinding and wsp:policyWCF、wsHttpBinding 和 wsp:policy
【发布时间】:2010-11-24 19:13:31
【问题描述】:

我正在使用 .NET 4.0、WCF 和 wshttp 绑定来创建一些 ws 方法。使用 wsHttp 绑定的原因是我需要对身份验证、加密和签名的支持。

当我创建这样的服务并查看 wsdl 时,我看到那里有 wsp:policy 标记。有没有办法以某种方式影响 WCF 配置并删除此标记?

据我了解,可以在没有此标签的情况下进行加密和签名。

【问题讨论】:

    标签: .net wcf web-services wshttpbinding


    【解决方案1】:

    您可以用自己的 WSDL (serviceMetadata - externalMetadataLocation) 替换生成的 WSDL。这是我确信您可以实现您想要的目标的唯一方法,因为您将从头开始编写 WSDL。修改生成的 WSDL 和策略有一些扩展点 - IWsdlExportExtensionIPolicyExportExtension 但我认为您只能向 WSDL 添加新项目,但不能删除由 API 功能(内置安全性等)添加的项目.

    顺便说一句。恕我直言,删除策略是非常糟糕的主意,因为 WSDL 应该描述服务,并且它应该是开发人员创建客户端应用程序所需的唯一描述。如果您删除策略,您的 WSDL 将仅包含有关您的服务的部分信息,它将变得无用。你肯定会破坏与代理生成工具的兼容性。我有关于这个话题的相关question

    【讨论】:

    • 嘿 Ladislav,10 倍的响应。这样做的唯一原因是因为我的 WS 将被一些 Java 系统使用,这些系统可能会因为这个标签而出现问题。我会记住您的评论,并保持这个标签作为我的 wsdl 定义的一部分。一个相关的问题,我可以使用 externalMetadataLocation 属性来定义 XSD 定义的路径,还是仅适用于 wsdl?
    • XSD 是从 WSDL 引用的,因此您无需在配置中指定它们的路径。您将在 WSDL 中指定它。
    • 有趣(关于)现在是 2015 年,我仍然有 Java 消费者因为这个标签而遇到问题。如果这么多的客户无法使用它,我真的希望 MS 能提供一种删除它的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    相关资源
    最近更新 更多