如何将两个端点行为应用于一个行为配置?

时间:2010-01-21 00:27:55

标签: wcf wcf-binding behavior endpoint

这个问题是@ joshperry对CustomQueryStringConverter的回答。我通过一个小修改实现了这个解决方案。我的版本转换System.Int32[]而不是string[]

但是,我的WCF配置有问题。我的服务包括SOAP,XML和JSON。 SOAP不是问题,这个解决方案适用于XML,但JSON仍然搞砸了。我尝试发现自动执行JSON转换的类(enableWebScript行为)是一个密封类,所以我不能像对WebHttpBehavior那样覆盖它。我也试过添加两个行为,但这也不起作用:

    <behaviors>
      <endpointBehaviors>
        <behavior name="xmlBehavior">          
          <ArrayQuerystring />
        </behavior>
        <behavior name="jsonBehavior">                    
          <ArrayQuerystring />
          <enableWebScript />
        </behavior>
      </endpointBehaviors>      
    </behaviors>

我认为这可能是一个订购问题?如果我将ArrayQuerystring行为放在第一位,我就没有结果。如果我把它放在第二位,那么我得到的结果与XML端点相同。如何将CustomQuerystringConverter应用于JSON端点?

1 个答案:

答案 0 :(得分:1)

JSON解析器已经支持数组。您可以在URL行上传递它们,如下所示:

...?ID=2&includedCollections=["Addresses","Phones"]