【问题标题】:Return JSON wrapped in a callback function from a WCF REST web service从 WCF REST Web 服务返回包装在回调函数中的 JSON
【发布时间】:2010-11-13 19:08:59
【问题描述】:

我有一个返回 JSON 的 Web 服务,但现在我想修改它以允许调用者指定回调函数,以便返回从:JSON DATA 到 specifiedFunction(JSON DATA);我现在返回 JSON 的方式就是返回一个对象的实例并让 .NET 执行它的序列化魔法,如果我更改为只返回一个字符串,我可以添加函数的名称和数据周围的括号,但是然后我在返回中加上引号,因为它是一个字符串,我不想要那些。那我该怎么办呢?

这样做的原因是我们希望调用我们的 API 的开发人员能够使用动态脚本标记,如此处所述http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html

【问题讨论】:

    标签: .net wcf json callback jsonp


    【解决方案1】:

    我知道这是一个旧线程,但似乎每个人都坚持更改 WCF 以支持 JSONP,而这显然不是发帖人所要求的。我在这里和forums.asp.net 发帖,没有人花时间回复。

    我最终将它作为流返回。这会导致使用“原始”模式,并且 WCF 不会触及响应。链接:http://blogs.msdn.com/b/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-web.aspx.

    【讨论】:

    • 我从昨天早上开始就一直在研究这个问题!!你和卡洛斯的博文救了我的后腿!非常感谢!!
    【解决方案2】:

    在 WCF 4.0 中添加了对 JSONP 的支持。你可以使用

      <bindings>
        <webHttpBinding>
          <binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true" />
        </webHttpBinding>
      </bindings>
    

    http://bendewey.wordpress.com/2009/11/24/using-jsonp-with-wcf-and-jquery/

    【讨论】:

      【解决方案3】:

      您所追求的技术称为JSONP(带有填充的JSON)。

      How to support JSONP in WCF services:

      JsonPEncoder 是一个包装编码器 在 WCF JSON 编码器上。它代表 大多数对包装编码器的调用。这 WriteMesage 方法已经 覆盖以填充传出消息 使用回调方法。这 JsonBehavior 用于服务 启用 JSONP 编码的操作 那个操作。查询参数 保存回调的 URI 函数名被指定为 CallBack 行为的属性。

      【讨论】:

      • 哇。我听说过 JSONP,但不知道它发送了回调函数名称。浏览器支持该 src=expression 语法的任何链接?
      【解决方案4】:

      我不知道他们使用的是什么版本的 HTML,但在我使用的所有版本中,脚本标记中的 src 属性必须是 URL。他们以某种方式使用了一个函数,但我认为它不起作用。

      你真的见过动态脚本标签的工作原理吗?

      【讨论】:

      • 我个人没有使用过,但据我所知可以做到。有一些 Web 服务示例以我所追求的风格返回,例如 geonames.org/export/JSON-webservices.html
      • 我并不关心这些服务,因为我是浏览器。更新的人可以纠正我,但我不希望在 src 属性中使用 URL 以外的任何东西。
      • 无论如何,任何有关如何根据需要格式化返回的帮助将不胜感激:)
      猜你喜欢
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 2014-05-11
      • 2018-04-22
      • 2019-05-24
      • 1970-01-01
      • 2014-06-20
      • 1970-01-01
      相关资源
      最近更新 更多