如何将两个端点行为应用于一个行为配置?
这个问题是 @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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
JSON 解析器已经支持数组。您可以像这样在 URL 行上传递它们:
The JSON parser already supports arrays. You can pass them on the URL line like this: