代码之家  ›  专栏  ›  技术社区  ›  Mohammad

在windows server 2012 R2上发送http/2请求

  •  6
  • Mohammad  · 技术社区  · 7 年前

    我想在我的应用程序中使用APNs推送服务,因此我使用以下代码:

        var responseString = string.Empty;
        using (var request = new HttpClient(new Http2CustomHandler()))
        {
            var content = new StringContent(body);
            request.DefaultRequestHeaders.Add("authorization", $"bearer {authorization}");
            request.DefaultRequestHeaders.Add("apns-topic", topicName);
            if (!string.IsNullOrWhiteSpace(iD)) request.DefaultRequestHeaders.Add("apns-id", iD);
            if (!string.IsNullOrWhiteSpace(expiration)) request.DefaultRequestHeaders.Add("apns-expiration", expiration);
            if (!string.IsNullOrWhiteSpace(priority)) request.DefaultRequestHeaders.Add("apns-priority", priority);
            if (!string.IsNullOrWhiteSpace(collapseID)) request.DefaultRequestHeaders.Add("apns-collapse-id", collapseID);
            var result = request.PostAsync(url, content).GetAwaiter().GetResult();
    
            responseString = result.Content.ReadAsStringAsync().GetAwaiter().GetResult();
        }
    

    在我的机器(windows 10)上工作正常。但当我在服务器(windows server 2012 R2)上部署应用程序时,它会引发以下异常:

    System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: A security error occurred
    

    有没有办法解决这个问题?

    1 回复  |  直到 7 年前
        1
  •  9
  •   e p    7 年前

    您很可能已经发现,这可能是因为HTTP/2仅在Windows Server 2016(IIS10)和Windows 10中受支持。

    Windows Server 2012上的IIS版本不支持HTTP/2。

    看见 https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-10/http2-on-iis