5

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

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

4

4 回答 4

5

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

请参阅如何在 WCF 服务中支持 JSONP

JsonPEncoder是 WCF JSON 编码器上的包装编码器。它将大多数调用委托给封装的编码器。这些 WriteMesage方法已被覆盖以使用回调方法填充传出消息。JsonBehavior用于服务操作以启用该操作的 JSONP 编码。 保存回调函数名称的 URI 的查询参数被指定为 CallBack行为的属性。

于 2009-07-24T18:40:41.627 回答
5

在 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/

于 2011-07-31T22:52:52.287 回答
1

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

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

于 2013-07-12T13:49:17.823 回答
1

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

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

于 2009-07-24T16:47:00.107 回答