【问题标题】:Single WCF REST service with multiple behaviours具有多种行为的单个 WCF REST 服务
【发布时间】:2011-08-23 04:56:16
【问题描述】:

是否可以创建具有两个具有不同行为的端点的 WCF REST 4.0 服务?具体来说,我正在寻找一个端点使用transferMode=Streamed,另一个端点使用Buffered

我开始使用 WCF REST 服务应用程序,它似乎是 WCF 和 ASP MVC 路由技术的混合体。我可以为两个端点设置 transferMode system.serviceModel/standardEndpoints/webHttpEndpoint/standardEndpoint 但是在我的路线上应用额外的路线并没有任何乐趣。

我不太清楚 WCF/MVC 分离存在于何处,例如 Global.asax 是否算作一个 WCF 端点或路由是否是单独的端点,因此不确定如何进行。

  • 是否有一个简单的Web.config 更改或属性可以应用于服务以指定不同的行为?
  • 如果不是,我可以使用不同的行为创建单独的 asax 文件而不是一个 Global.asax 文件吗?
  • 如果不是,我是否应该像在普通 WCF 应用程序中一样创建 .svc 文件来映射到我的类?
  • 如果不是,我是否必须创建第二个项目来定义不同的行为?

【问题讨论】:

    标签: wcf rest


    【解决方案1】:

    每个服务路由都会创建一个新的 ServiceHost。此外,现在不推荐使用 REST Starter Kit,您应该直接使用 WCF REST 4.0,或者您应该在 http://wcf.codeplex.com 上查看新的 WCF Web API 内容

    【讨论】:

    • 抱歉提到了starter kit,它实际上是一个WCF Rest Service Application。
    • 干杯。您知道可以单独配置服务主机的任何方式吗?最好是比定义自定义服务主机更轻松的方式。
    【解决方案2】:

    那样做怎么样:

    <services>
      <service name="YourNamespace.YourServiceClass">
        <endpoint address="stream" kind="webHttpEndpoint" endpointConfiguration="webHttpStreamed" contract="YouServiceContract" />
        <endpoint address="buff" kind="webHttpEndpoint" endpointConfiguration="webHttpBuffered" contract="YouServiceContract" />
      </service>
    </services>
    
    <standardEndpoints>
      <webHttpEndpoint>
        <standardEndpoint name="webHttpStreamed" transferMode="Streamed" />
        <standardEndpoint name="webHttpBuffered" transferMode="Buffered" />
      </webHttpEndpoint>
    </standardEndpoints>
    

    当然,两个端点的地址不能重叠。

    【讨论】:

    • 非常好,这正是我希望可行的方法 :) 我添加了一个服务部分和第二个标准端点;所有与端点地址匹配的请求都使用该配置,所有其他请求都通过默认的未命名标准端点。 (唯一美中不足的是我必须指定一个绝对地址才能将https放在前面,否则它无法告诉我有传输安全性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多