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

发布于 2024-08-18 13:31:44 字数 1183 浏览 9 评论 0原文

这个问题是 @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 端点?

This question is a follow up to @joshperry's answer on CustomQueryStringConverter. I implemented this solution with a small modification. My version converts System.Int32[] instead of string[].

However, I have a problem with my WCF configuration. My service dishes out SOAP, XML and JSON. SOAP wasn't a problem, this solution works for XML, but JSON is still messed up. I tried found out that the class that does JSON conversion automatically (enableWebScript behavior) is a sealed class, so I can't override it like you did for WebHttpBehavior. I also tried adding two behaviors, but that didn't work either:

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

I think it might be an ordering issue? If I put the ArrayQuerystring behavior first, I get no results. If I put it second, then I get the same results as the XML endpoint. How do I apply your CustomQuerystringConverter to a JSON endpoint?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ㄖ落Θ余辉 2024-08-25 13:31:44

JSON 解析器已经支持数组。您可以像这样在 URL 行上传递它们:

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

The JSON parser already supports arrays. You can pass them on the URL line like this:

...?ID=2&includedCollections=["Addresses","Phones"]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文