2011-01-20 56 views
0

有没有什么办法可以配置webHttpBinding WCF服务接受多个查询字符串参数,Stream参数是请求的主体?将查询字符串参数添加到WCF服务操作接受流

我想这样做而不省略操作签名中的querystring参数并直接从OperationContext访问它们。

UriTemplate看起来是明显的选择,但只会导致AddressFilter不匹配异常被抛出。

为了避免“流可以是唯一参数”错误,将参数移动到具有MessageHeader属性的MessageHeader属性上,以避免MessageHeader属性不受WebHttpBinding支持。

只留下MessageContract上的Stream参数会通知我MessageContracts中不支持Streams for WebScriptEnablingBehavior。

有什么想法?

回答

1

对此的解决办法是:

  1. 马克与具有Method="POST"UriTemplate包括在查询字符串
  2. 设置端点的结合webHttpBinding
  3. 您的非流参数的 [WebInvoke]属性操作
  4. <webHttp/>添加到您的端点的行为配置
  5. 在您的端点的绑定配置上设置transferMode="Streamed"

而且有些事情需要注意的:

  • wsHttpEndPoint和basicHttpEndPoint不支持流和非流参数的组合。如果你需要SOAP + webHttpBinding,你需要使用两个服务接口和两个端点(尽管可以共享具体的实现)
  • WSDL生成器也不支持它,所以你需要禁用webHttp端点或访问帮助页面时会抛出一个异常(虽然调用服务仍然可以)
相关问题