我试图在所有论坛上搜索相关答案,但实际上对我们来说还没有任何效果。感谢有人能在这方面真正帮助我们,因为我们将在几天内即将发布
我们创建了一个基于WinJS的Windows桌面应用程序,该应用程序通过VPN /或专用APN配置消耗基于Oracle SOA的Web服务(基于http)
每当我们尝试访问服务时,我们得到一个状态0作为xhr的返回值(我假设与响应相关的是null)&在
中得到这个WinJS.xhr:网络错误0x2efd,由于错误00002efd无法完成操作
我们尝试使用各种建议的选项,例如在清单文件中允许私有网络(假设这是一个CORS问题),但无济于事
"专用网络(家庭和服务器)"
<Capabilities>
<Capability Name="internetClient" />
<Capability Name="privateNetworkClientServer" />
</Capabilities>
我们一直在使用Fiddler(环回选项),但这只是暂时的,有人可以建议,我们可能会缺少什么,或者根据他们的经验告诉我们我们的方法可能有什么问题。
非常感谢任何帮助。
答案 0 :(得分:0)
<强>背景强>
当您无法访问互联网时, WinJS.XHR
会返回response.status === 0
。不幸的是,这在 WinJS 3.0 :
if ((req.status >= 200 && req.status < 300) || req.status === 0) {
schedule(c, req, priority);
} else {
schedule(e, req, priority);
}
在 WinJS 4.x 中,他们更改了条件,因此:
if ((req.status >= 200 && req.status < 300) ||
(req.status === 0 && options.url.substr(0,7) === 'file://')) {
schedule(c, req, priority);
} else {
schedule(e, req, priority);
}
以及最近的4.4:
if ((req.status >= 200 && req.status < 300) || (isLocalRequest && req.status === 0)) {
schedule(c, req, priority);
} else {
schedule(e, req, priority);
}
请参阅:https://github.com/winjs/winjs/commit/8d44a3ee4105aa05fb69cd82943b9c07500bf523
这意味着在您的成功承诺回调中,您将收到空回复。
WinJS.XHR({[...]}).then((response: XMLHttpRequest) => {
// Here response.status === 0 instead of error in the error handler!!!
}, (error) => console.log(error));
<强>解决方案强>