【问题标题】:WCF 4.0 Add WebHttpBinding Endpoint by DefaultWCF 4.0 默认添加 WebHttpBinding 端点
【发布时间】:2011-06-10 02:42:29
【问题描述】:

有没有办法通过 WCF 4.0 中的配置自动为我的所有 WCF 服务全局执行此操作?

也就是说,我知道 WCF 4.0 公开了新的配置技术,默认情况下将某些行为应用于所有托管端点,并且您不再需要通过配置显式指定单个端点...但是我可以在配置说自动托管具有 BasicHttpBinding 和 WebHttpBinding 的所有服务(使用 WebHttpBinding 的 /web 相对地址)?还是我还需要为此使用自定义 ServiceHostFactory?

谢谢。

【问题讨论】:

    标签: wcf .net-4.0 wcf-binding


    【解决方案1】:

    请参阅Developer's Introduction to WCF 4,了解 WCF 4 中的许多有趣内容。

    其中一项新功能称为默认协议映射,结合 WCF 4 提供的默认端点可能会解决您的问题。

    默认端点意味着 WCF 4 将为您的服务类实现的每个合同(通常只有 1 个)和您的配置中定义的每个基地址(或 ServiceHost 的代码)提供一个端点。

    为了确保http:// 端点通过webHttpBinding 自动暴露,您还需要覆盖系统默认值(即basicHttpBinding) - 这要归功于协议映射。

    <configuration>
      <system.serviceModel>
        <protocolMapping>
          <add scheme="http" binding="webHttpBinding"/>
        </protocolMapping>
      </system.serviceModel>
    </configuration>
    

    【讨论】:

    • 谢谢。但是有没有办法告诉它同时使用 webHttpBinding 和 basicHttpBinding (也许与 webHttpBinding 的 /web 相对 URL)?
    • @JeffN825:不,您不能自动同时拥有基于 HTTP 的绑定 - 如果需要,您必须在代码或配置中明确定义端点及其绑定。您只能为每个“方案”(http、net.tcp 等)定义一个默认绑定。请参阅我对有关此主题的其他 SO 问题的回答:stackoverflow.com/questions/4704829/…
    • 顺便说一句。如果使用 WebServiceHost,则默认使用 webHttpBinding,无需任何配置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 2011-03-03
    • 2017-06-27
    • 2016-05-14
    • 1970-01-01
    • 2012-04-25
    相关资源
    最近更新 更多