WinJS.xhr: 网络错误0x2efd,由于错误00002efd无法完成操作。

9

在使用JavaScript开发Windows 8 Metro应用时,我遇到了WinJS.xhr的问题。

WinJS.xhr({ url: "http://www.seznam.cz"});

当执行上述代码时,我在日志中看到:
SCRIPT7002: XMLHttpRequest: Network Error 0x2efd, Could not complete
the operation due to error 00002efd.

我已在清单中启用“Internet(客户端)”功能。
也许问题是因为我在代理后面并且使用VPN,但我可以使用Google Chrome访问互联网(只需授权,否则会出现HTTP状态407-需要代理授权)。
我该如何解决呢?
[编辑] 所以我发现这可能与我必须使用的VPN有关(Cisco VPN客户端)。当我禁用VPN时,即使我在代理后面(我使用LAN,使用WiFi时使用VPN),请求也能正常工作。可能仅与Cisco VPN相关。我不得不修改注册表,如此处描述
另外有趣的是,有些Metro应用程序(地图)在我在代理后工作,而有些则不工作(Windows商店)。
请注意:我已经探索了Windows.Networking.Connectivity,在有/没有VPN的两种情况下,我得到NetworkConnectivityLevel ==“本地访问”(可能是因为我在代理后面)。
3个回答

16

当我连接到我的工作场所的SSL/VPN连接(来自Juniper)时,我遇到了相同的错误。

打开.appxmanifest文件并添加“私有网络(家庭和服务器)”功能解决了这个问题。

<Capabilities>
  <Capability Name="internetClient" />
  <Capability Name="privateNetworkClientServer" />
</Capabilities>

非常感谢,我已经疯狂了两个小时,试图弄清楚这是什么。 - rbyrne
值得注意的是,未启用“私有网络(客户端和服务器)”功能的未签名应用程序可以正常工作,包括 ajax 调用等。但是,一旦您使用准备部署到设备的证书对应用程序进行签名,您将需要启用该功能。 - markp3rry

1
这个解决方案对我有用(请参见下面的论坛链接)...基本上,您需要将服务器证书添加到Windows Store应用程序清单中(还要确保您的清单“功能”至少设置为“InternetClient”)。 您可以通过从浏览器导出它来获取服务器证书,将其保存为“.der”文件。 使用Firefox比IE更容易做到这一点(从FF中,浏览到具有证书的目标域,然后右键单击页面>页面信息>安全选项卡>详细信息选项卡>导出按钮>另存为“.der”。

http://social.msdn.microsoft.com/Forums/en-ZA/winappswithcsharp/thread/4a776e8c-0e10-4f03-908f-7f765d914080?prof=required

这个解决方案似乎很荒谬 - 所以请记住,这可能只适用于使用自签名证书的网站,例如在开发环境中,因为其他生产网站不需要进行此过程。


0

这个问题的正确解决方法已经在MSDN论坛上发布了,但对我来说并没有起作用,以下方法可以尝试一下


config.xml

...

<platform name="windows"> 
     <config-file target="package.appxmanifest"> 
         <DeviceCapability Name="privateNetworkClientServer" /> 
     </config-file>
     ...
 </platform> 

这些将与您的其他功能合并


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接