WinJS.xhr: ошибка сети 0x2efd, не удалось завершить операцию из-за ошибки 00002efd

У меня возникла проблема с WinJS.xhr при разработке приложения Windows 8 Metro на JavaScript.

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

Когда приведенный выше код выполняется, я вижу в журнале:

SCRIPT7002: XMLHttpRequest: Network Error 0x2efd, Could not complete
the operation due to error 00002efd.

Я включил возможность «Интернет (Клиент)» в манифесте.

Возможно, проблема в том, что я использую прокси-сервер и использую VPN, но я могу получить доступ к Интернету с помощью Google Chrome (мне просто нужно авторизоваться, иначе HTTP-статус 407 - требуется авторизация прокси-сервера).

Как я могу это исправить?

[EDIT] Итак, я обнаружил, что это, вероятно, связано с VPN, которую я должен использовать (Cisco VPN Client). Когда я отключаю VPN, даже когда я за прокси (использую локалку, с VPN использую WiFi), запрос работает. Возможно, это связано только с Cisco VPN. Мне пришлось изменить реестр, как это описано здесь http://verbalprocessor.com/2012/09/17/windows-8-and-cisco-vpn-client/

Также интересно, что некоторые приложения Metro работают (карты), а некоторые не работают (магазин Windows), когда я нахожусь за прокси.

Просто примечание: я изучил Windows.Networking.Connectivity и в обоих случаях (с/без VPN) я получаю NetworkConnectivityLevel == «Локальный доступ» (потому что я, вероятно, за прокси-сервером).


person Jirka Meluzin    schedule 01.11.2012    source источник


Ответы (3)


Я получил ту же ошибку при подключении к SSL/VPN-соединению на моем рабочем месте (от Juniper).

Открытие файла .appxmanifest и добавление возможности «Частные сети (домашний и сервер)» решило проблему.

<Capabilities>
  <Capability Name="internetClient" />
  <Capability Name="privateNetworkClientServer" />
</Capabilities>
person anderaus    schedule 06.02.2013
comment
Спасибо большое, я уже 2 часа с ума схожу, пытаясь понять, что это такое - person rbyrne; 20.02.2014
comment
Стоит отметить, что ваши вызовы ajax и т. д. будут нормально работать в неподписанном приложении без включенной возможности частных сетей (клиент и сервер). Как только вы подпишете свое приложение сертификатом, готовым к развертыванию на устройстве, вам нужно будет включить его. - person markp3rry; 04.08.2014

Это решение сработало для меня (см. Ссылку на форумы ниже) ... по сути, вам нужно добавить сертификат сервера в манифест приложения Магазина Windows (также убедитесь, что ваши самые манифестные «Возможности» установлены как минимум на «InternetClient»). Вы можете получить сертификат сервера, экспортировав его из своего браузера, сохранив в виде файла «.der». Использовать Firefox было проще, чем IE, в этом (из FF перейдите к целевому домену, имеющему сертификат, затем щелкните правой кнопкой мыши страницу> Информация о странице> вкладка «Безопасность»> вкладка «Подробности»> кнопка «Экспорт»> сохранить как «.der».

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

Это решение кажется абсурдным, так что имейте в виду, что это может быть необходимо только для сайтов, которые используют самозаверяющие сертификаты, например, в среде разработки, потому что этот процесс не нужен для других производственных сайтов.

person mytwocents    schedule 05.11.2012

Правильный способ сделать это был опубликован на MSDN форумы, у меня это не сработало, но сработало следующее


config.xml

...

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

Они будут объединены с другими вашими возможностями.

person Isaac    schedule 20.04.2016