System.Net.HttpClient создает исключение COMException при попытке доступа в Интернет из корпоративного домена - PullRequest
0 голосов
/ 11 октября 2018

Я пишу свое первое приложение 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 через Интернет.

Вотнекоторые дополнительные складки:

  1. Я успешно получаю 404, когда я отключаю свое подключение к Ethernet и подключаюсь к Wi-Fi.Если я подключаюсь к VPN через Wi-Fi обратно в свой домен, я получаю исключение снова.
  2. Выполнение одного и того же запроса в Postman (даже для реального API, к которому я пытаюсь получить доступ) работает независимо от подключения к сети / домену.

Я догадываюсь, что в UWP не хватает некоторыхвид авторизации или возможности, о которых я не знаю для моей доменной сети.Спасибо за любой совет по этому поводу!

...