具有多个行为的单个WCF REST服务

时间:2011-05-11 10:42:47

标签: wcf rest

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

那样做:

<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>

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