gpt4 book ai didi

wcf - OData $format 系统查询选项导致错误请求 400

转载 作者:行者123 更新时间:2023-12-01 01:33:00 25 4
gpt4 key购买 nike

我有一个非常简单的基于反射的 OData 示例,当我按照指示使用 Accept header 时,它运行良好并生成 json。但是,我无法让它与 $format=json 参数一起使用。每当我添加该参数时,我都会收到错误请求。据此,它似乎应该可以工作:link text

请注意,其他系统查询选项(如 $select)可以正常工作。这是通过 VS2010 运行的 .Net 4。

最佳答案

使用 $format=json即使 OData 规范表示支持,开箱即用的 .NET 4 WCF 数据服务也将不起作用。我不确定微软为什么不直接支持它。但是对于这种情况有两种解决方法 - 一种感觉有点笨拙,而另一种则有意义。
首先,感觉有点hacky的解决方案是构建一个HttpHandler来拦截你的请求,阅读$format=json querystring 参数,然后向您的请求添加一个接受 header (同时删除有问题的 $format=json 参数)。这在 this blog post 中有描述.
第二种方案,听起来好一点,是用 [JSONPSupportBehavior] 装饰你的数据服务。属性。这更有意义,也更容易实现(因为您不必构建 HttpHandler)。以下是一些有用的链接:

  • Blog post描述如何使用
    它。
  • Link to download [JSONPSupportBehavior] 的源代码
    属性(是的,您必须构建
    它——我还没有找到编译好的
    下载)。

  • 我喜欢属性方法,我只是希望它不是从 CodePlex 下载的……只是听起来还不支持。但那只是我的个人意见。
    老实说,如果您有控制权,最好的方法就是在您的 application/json 请求中添加一个接受 header 。 ,您的服务将自动返回 JSON 格式的结果。
    我希望这有帮助。

    关于wcf - OData $format 系统查询选项导致错误请求 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3604188/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com