Excel 2013应用程序,jQuery,WCF调用失败,出现“无传输”错误

编程环境是: – Windows 8桌面; – WCF服务; – Excel 2013办公应用程序; – WCF服务和Excel办公应用程序在同一台机器上运行; – 办公室应用程序对WCF服务进行ajax调用; 发生问题的JavaScript代码(在办公室应用程序中使用)是:

function F() { $.support.cors = true; $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", url: "http://localhost:5000/<service>/<method>", data: '{<my data>}', dataType: "json", success: ... error: ... }); } 

这是我有的问题 – 当我从Excel 2013应用程序调用WCF服务时,我得到一个“无传输”错误。 我能够确定以下用例:1)只有当我运行独立的Excel 2013实例并从“插入”Excel菜单中插入应用程序时,才会发生这种情况。 2)如果我从VS2012运行应用程序,那么一切都很好,我可以调用WCF服务没有任何问题。 (顺便说一句,WCF服务运行在同一台机器上,我从Excel 2013应用程序中创build的请求是ajax)。 3)与(2)相同的情况。 该应用程序可以进行WCF调用。 然后我也从Excel的“插入”菜单插入我的应用程序的一个实例。 在这种情况下,如果我尝试使用插入的应用程序实例进行WCF调用,则会出现与(1)中相同的错误 – “无传输”。

我在互联网上进行了一些search,发现我的问题可能与我尝试进行的调用是跨域调用有关。 (顺便说一下,我debugging了jQuery代码,这个调用实际上是一个跨域的)。 build议的解决scheme是在调用之前设置一个jQuery属性:“jQuery.support.cors = true;”。 我在Excel 2013应用程序代码中这样做了,但问题没有解决。 然后我跟踪jQuery代码中的调用,发现:

1)当应用程序从VS2012运行时,jQuery创build两个传输对象:(1)一个用于跨域请求,(2)只有通过XMLHttpRequest允许跨域请求。 当从应用程序进行WCF调用时,jQuery使用第二个传输,并且调用成功。

2)当从Excel 2013“插入”菜单中插入应用程序时,在WCF调用之前,jQuery只创build一个传输对象,用于跨域请求。 然后,jQuery“决定”使用该传输对象是不可能的,并且请求失败,出现“无传输”错误。

任何想法,为什么发生这个问题可以如何解决?