Я пишу свое первое приложение UWP (только для Windows 10), используя Xamarin.Forms.Я написал следующий тестовый класс, чтобы установить, что я могу подключиться к Интернету из своего приложения:
public class NetworkInterface
{
private static readonly System.Net.Http.HttpClient WebClient = new HttpClient();
private void Get()
{
try
{
var response = WebClient.GetAsync($"https://google.com/foo").Result;
}
catch (Exception e)
{
Debug.WriteLine("Error: " + e);
}
}
}
Я ожидаю, что получу ответ 404 на этот запрос, но вместо этого я получу следующее:
System.Net.Http.HttpRequestException: An error occurred while sending the
request. ---> System.Runtime.InteropServices.COMException: The text
associated with this error code could not be found.
A connection with the server could not be established
Я знаю, что этот вопрос был задан несколько раз ранее, и что ответ, как правило, заключается в том, что автор не включил определенные возможности UWP.Я попытался устранить это как потенциальный барьер, включив все доступные возможности.Из моего Package.appxmanifest:
<Capabilities>
<Capability Name="internetClient" />
<Capability Name="internetClientServer" />
<Capability Name="privateNetworkClientServer" />
<Capability Name="codeGeneration" />
<Capability Name="allJoyn" />
<uap:Capability Name="enterpriseAuthentication" />
<uap4:Capability Name="userDataTasks" />
<uap:Capability Name="voipCall" />
<uap:Capability Name="videosLibrary" />
<uap3:Capability Name="userNotificationListener" />
<uap:Capability Name="userAccountInformation" />
<iot:Capability Name="systemManagement" />
<uap2:Capability Name="spatialPerception" />
<uap:Capability Name="sharedUserCertificates" />
<uap:Capability Name="removableStorage" />
<uap3:Capability Name="remoteSystem" />
<mobile:Capability Name="recordedCallsFolder" />
<uap:Capability Name="picturesLibrary" />
<uap2:Capability Name="phoneCallHistoryPublic" />
<uap:Capability Name="phoneCall" />
<uap4:Capability Name="offlineMapsManagement" />
<uap:Capability Name="objects3D" />
<uap:Capability Name="musicLibrary" />
<iot:Capability Name="lowLevelDevices" />
<uap:Capability Name="contacts" />
<uap:Capability Name="chat" />
<uap:Capability Name="blockedChatMessages" />
<uap:Capability Name="appointments" />
<uap3:Capability Name="backgroundMediaPlayback" />
<uap6:Capability Name="graphicsCapture" />
<DeviceCapability Name="webcam" />
<DeviceCapability Name="proximity" />
<DeviceCapability Name="pointOfService" />
<DeviceCapability Name="microphone" />
<DeviceCapability Name="location" />
<DeviceCapability Name="gazeInput" />
<DeviceCapability Name="bluetooth" />
</Capabilities>
Однако я понимаю, что мне нужна только возможность "internetClient" для предполагаемого использования доступа к API через Интернет.
Вотнекоторые дополнительные складки:
- Я успешно получаю 404, когда я отключаю свое подключение к Ethernet и подключаюсь к Wi-Fi.Если я подключаюсь к VPN через Wi-Fi обратно в свой домен, я получаю исключение снова.
- Выполнение одного и того же запроса в Postman (даже для реального API, к которому я пытаюсь получить доступ) работает независимо от подключения к сети / домену.
Я догадываюсь, что в UWP не хватает некоторыхвид авторизации или возможности, о которых я не знаю для моей доменной сети.Спасибо за любой совет по этому поводу!