IIS 10(Windows Server 2016))でホストされているasp.net Web APIがあります。MicrosoftEdgeブラウザーからGET
要求を行うと、HTTP 2.0
はIISログで使用されます
2015-09-20 21:57:59 100.76.48.17 GET /RestController/Native - 443 - 73.181.195.76 HTTP/2.0 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/42.0.2311.135+Safari/537.36+Edge/12.10240 - 200 0 0 7299
ただし、以下のようにGET
リクエストが 。net 4.6クライアント を介して行われた場合、
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://myapp.cloudapp.net/");
HttpResponseMessage response = await client.GetAsync("RestController/Native");
if (response.IsSuccessStatusCode)
{
await response.Content.CopyToAsync(new MemoryStream(buffer));
}
}
サーバーログに次のHTTP 1.1
ログが表示されます
2015-09-20 20:57:41 100.76.48.17 GET /RestController/Native - 443 - 131.107.160.196 HTTP/1.1 - - 200 0 0 707
.netクライアントにHTTP/2.0を使用させるにはどうすればよいですか?
HttpClient
はまだHTTP/2をサポートしていません。次のリリースで利用できるようになります(コード名KATANA)。 次のリリースのソースコードへのリンク です。
それまでは、HTTP/2を実装する独自のHttpMessageHandler
オブジェクトを実装し、それをHttpClient
のコンストラクターに渡すことができました(おそらく、カタナのソースコードを使用できます)。
1 .最新バージョンのWindows 1を使用していることを確認します。
2.インストールWinHttpHandler:
Install-Package System.Net.Http.WinHttpHandler
3. WinHttpHandlerを追加してhttp2.サポートを追加:
public class Http2CustomHandler : WinHttpHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
request.Version = new Version("2.0");
return base.SendAsync(request, cancellationToken);
}
}
4.ハンドラーをHttpClientコンストラクターに渡す
using (var httpClient = new HttpClient(new Http2CustomHandler()))
{
// your custom code
}
HTTP/2は、.NET 4.6.2でのC#クライアント呼び出しでサポートされるように見えます
https://msdn.Microsoft.com/en-us/library/ms171868(v = vs.110).aspx
HTTP/2サポート(Windows 10)
HTTP/2はHTTPプロトコルの新しいバージョンであり、はるかに優れた接続利用率(クライアントとサーバー間の往復回数の減少)を提供し、ユーザーのWebページの読み込みの待ち時間を短縮します。プロトコルは単一のエクスペリエンスの一部として要求される複数のアーティファクトに対して最適化されるため、Webページ(サービスではなく)はHTTP/2から最も恩恵を受けます。 HTTP/2サポートが.NET Framework 4.6のASP.NETに追加されました。ネットワーク機能は複数の層に存在するため、HTTP/2を有効にするには、Windows、IIS、およびASP.NETで新しい機能が必要でした。 ASP.NETでHTTP/2を使用するには、Windows 10で実行する必要があります。
System.Net.Http.HttpClient APIを使用するWindows 10ユニバーサルWindowsプラットフォーム(UWP)アプリでは、HTTP/2もデフォルトでサポートされています。