HttpClient HTTP / 2 вызов APN из функции Azure - PullRequest
0 голосов
/ 28 ноября 2018

Я использую HttpClient для отправки Apple Push-уведомлений на сервер APN HTTP / 2.Мне удалось заставить его работать с помощью System.Net.Http.WinHttpHandler пакета nuget:

var http = new HttpClient(new WinHttpHandler());
var request = new HttpRequestMessage(HttpMethod.Post, new Uri(url))
{
    Version = new Version(2, 0),
    Content = new StringContent(json)
};
// Set headers... Send... Read response... HTTP 200 OK

Это хорошо работает в Windows.Проблема в том, что WinHttpHandler больше нигде не поддерживается.Например, я не могу запустить этот код из функций Azure.У меня вопрос - есть ли кросс-платформенный способ отправки HTTP / 2-запросов с использованием .NET Core 2.1 или есть ли обходные пути для функций Azure 2.0, чтобы заставить его работать?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

У меня возникла проблема с использованием WinHttpHandler в функциях Azure 2.0.Мне удалось решить это с помощью обходного пути от здесь .В основном я поместил сборку .NET Standard 2.0 System.Net.Http.WinHttpHandler.dll в корень проекта функции и добавил это:

  <ItemGroup>
    <None Update="System.Net.Http.WinHttpHandler.dll">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>
  <Target Name="CopySPSM" BeforeTargets="Build">
    <Copy SourceFiles="System.Net.Http.WinHttpHandler.dll" DestinationFolder="$(OutputPath)\bin" />
  </Target>

С этим и установкой WEBSITE_LOAD_USER_PROFILE = 1, чтобы сделать CngKey.Importработать, чтобы подписать токен JWT для APN, он начал работать.

0 голосов
/ 28 ноября 2018

Когда вы настроитесь на .NET Core 2.1 и сделаете запрос HTTP / 2, он будет понижен до HTTP / 1.1.Вы можете переключить .NET Core 2.1 на другой стек HTTP.И .Net Core 2.1 в настоящее время не поддерживает HTTP / 2.0 .

Итак, я предлагаю вам вернуться к старому стеку, который поддерживает HTTP / 2.0.Для получения более подробной информации вы можете обратиться к этой проблеме .

...