Не удается подключиться к локальному хосту в приложении Windows Store
Поскольку я читаю по всему интернету, Microsoft блокирует возможность прослушивать и получать трафик на localhost (127.0.0.1) для любого порта. Я хочу для разработки purposus для локального тестирования моих приложений 2 сервера / клиента. Я следовал инструкции здесь: http://msdn.microsoft.com/en-us/library/windows/apps/hh780593.aspx
но это не работает. когда я использую опцию отладки, я получаю:
Состояние сетевых возможностей
InternetClient Not Used and Insecure
InternetClientServer Not Used and Insecure
PrivateNetworkClientServer Not Used and Insecure
Подробный отчет о трафике
InternetClient Not Used and Insecure
InternetClientServer Not Used and Insecure
PrivateNetworkClientServer Not Used and Insecure
Любая идея, почему это не работает?
2 ответа
Мой сценарий: разработал приложение для Магазина Windows для внутреннего использования, отлично работал на компьютере разработчика, однако при переносе на другой компьютер любой из вызовов HttpClient не удался. Здесь я столкнулся с двумя проблемами:
Ошибка HttpClient при связи с IIS на локальном компьютере
Сбой HttpClient при соединении с IIS на удаленном компьютере в локальной подсети
Проблема 2 была легко решаема, в Visual Studio настроить приложение, чтобы разрешить "Частные сети (клиент и сервер)" в соответствии с возможностями (Package.appxmanifest > Capabilities), повторно развернуть и все хорошо.
Проблему 1 было трудно решить. По умолчанию Visual Studio добавляет исключение в NetIsolation, которое разрешает и запрещает локальный доступ по шлейфу / локальный хост. Вы должны добавить свое приложение как исключение в этот список, однако информация в ссылке, представленной в OP, не работает, я не мог заставить команду работать вообще, поэтому вот как я это сделал:
(Обратите внимание, что приложение установлено на компьютере, на котором вы это выполняете)
- Перейдите в реестр и нажмите CTRL+F, чтобы найти ваше приложение (например, если оно называется TESTApp1, а затем введите его в поле поиска).
- Вы должны найти раздел реестра, который выглядит как guid, за которым следует имя, например:
ac2efce7-a15b-40d0-92db-3abde43a6778_1.0.1.15_neutral__025mzc78q1aqe
Если у вас есть это имя, в командной строке (на всякий случай от имени администратора) запустите:CheckNetIsolation.exe LoopbackExempt -s
В выводе найдите свой GUID. Вы увидите SID под ним, запишите этот SID.
3) Запустите следующую команду, указав свой SID на проблемном компьютере:CheckNetIsolation.exe LoopbackExempt -a -p=SIDHERE
Примечание: Альтернативный шаг 2. Вы также можете найти свой SID в следующем разделе реестра (при условии, что вы установили приложение):
HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Mappings
Снова нажмите CTRL+F и найдите там свое приложение.
Самым простым решением, которое я нашел, было позволить Fiddler настроить исключения для обратной связи для меня. Вы можете скачать Fiddler бесплатно. После установки следуйте этому руководству, чтобы выбрать, для каких приложений предоставлять исключения. Не забудьте также выполнить шаги, касающиеся сертификата, если вы планируете использовать HTTPS. Я надеюсь, что это помогает другим сэкономить время.