WCF - JSONP内容长度问题

时间:2011-06-30 21:35:37

标签: wcf json jsonp

情境:

Web服务需要计算值并将结果作为json发回。这些调用是跨域的,所以我使用的是jsonp。我遇到的问题出现在同一域和跨域。

问题:

我遇到了从WCF服务获取json数据的问题。虽然在我的本地机器上它工作正常,但是当在服务器上时,服务的响应被缩短(如果我通过服务器上的Visual Studio运行它,那很好)。

在将内容长度包装到jquery回调函数(下面的示例数据)之前,内容长度似乎被设置为我的响应长度。

本地:jQuery151017220264650085249_1309423933796({ “d”: “[\” 平\ “\ ”露台\“,\ ”半\“,\ ”独立式\“,\ ”平房\“]”});

本地:jQuery151017220264650085249_1309423933797({ “d”: “[\” 新构建\ “\ ”2000至10年\“,\ ”1990 - 2000年\“,\ ”1970至90年\“,\” 1950年至1970年\“,\”Pre 1950 \“]”});

直播:jQuery1510246237260361726_1309424024004({“d”:“[\”Flat \“,\”Terrace

住:jQuery1510246237260361726_1309424024005({ “d”: “[\” 新构建\ “\ ”2000年至2010 \“,\ ”1990 - 2000年\“,\” 1970

要使用回调函数包装json响应,我必须使用网上找到的httpmodule。

服务器使用IIS 7.5,本地我只使用Visual Studio。 (某种IIS配置?)

是的,希望我提供了足够的信息,如果不让我知道的话。

因此,如果有人知道如何解决这个问题,我们将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:1)

您无需使用HTTP模块将响应包装在JSONP中 - 此功能在WCF 4.0中可用。您可以在WebHttpBinding中设置属性CrossDomainScriptAccessEnabled,如果请求来自不同的域(并且它具有?callback = FunctionName)参数,则响应将包含在FunctionName(...)中。