HTTP/2 in System.Net.Http (or other?)



As you know, RFC 7540, which describes HTTP/2, was published recently.
I think HTTP/2 in .NET Framework is a matter that should be talked/discussed in forums.

What I’m interested in is client side.

Classes of HTTP client exist in System.Net.Http.
Browsing source code, it seems “core” implementation exists in native Windows HTTP Services (WinHTTP) API and that is called from System/Net/HttpClientHandler.CoreCLR.cs via System.Net.Http.WinHttpHandler.

System.Net.Http.WinHttpHandler in github


I think one of important topic about HTTP/2 in System.Net.Http is whether to support receiving server push or not.

My understanding is that it should not be supported in order to keep it simple to use the class library, meaning a kind of user experience.

Reading rfc7540, SETTINGS_ENABLE_PUSH value 0 in SETTING frame disables server push.
I think disabling is appropriate.


I’m going to disagree slight. While it may complicate things and therefore should be off by default, the .NET Framework (or Core) should not limit users to “easy” ways.


What we agreed might be the difficulty of supporting server push feature.
So I think we should make it clear about characteristics of server push and difficulty of implementing it in order to discuss effectively.

Reading around rfc7540, I found next topics about server push.

  1. Associated client-initiated request prior to server push
  2. Promised request and corresponding response pushed from server
  3. Pushed request and response cached in client


Those are all details that the .NET implementation would deal with, not the user


I believe that HTTP/2 is coming to ASP.NET 5. @davidfowl would be able to you in on the plan.

.NET Foundation Website | Blog | Projects | Code of Conduct