IIS 7 and Above
Does IIS10 support HTTP/2 using ISAPI?
Last post Jul 23, 2019 02:12 AM by brooksy60
Jul 12, 2019 02:34 PM|brooksy60|LINK
We have ISAPI applications on Windows Server 2016, and we are trying to enable HTTP/2.
As soon as the ISAPI application is accessed (from an outer application), the connection/session is downgraded to HTTP/1.1. Using Chrome Dev Tools shows the connection gets a HTTP_1_1_REQUIRED error at the end of the HTTP/2 connection negotiation and the
connection is downgraded.
Testing on a local computer, with the simplest of ISAPI applications demonstrates the same behavior. Until I access the ISAPI, that is, plain html/php, the connection will use HTTP/2, but as soon as I access the ISAPI, the session is downgraded, until I
close the tab and browser, and restart.
Can anybody confirm this, and would this imply we need to update to native modules? Or am I missing the "magic" IIS setting that will get this to work!
Thanks for any help,
Jul 16, 2019 06:42 PM|Thanapat samsan|LINK
Hi slot niki
Jul 18, 2019 06:35 AM|Able|LINK
According to you description,In some situations HTTP/2 would not be able to applied.
You could see as below.
1.Windows authentication (NTLM/Kerberos/Negotiate) is not supported with HTTP/2. In this case IIS will fall back to HTTP/1.1.
2.Clear text - as mentioned above, IIS currently only supports HTTP/2 over TLS. Again, IIS will fall back to HTTP/1.1.
3.Bandwidth throttling - IIS has a feature to limit bandwidth (in Inetmgr, select the site, 'Limits' under Configure of the Action pane). This applies to HTTP/1.1 but is not enforced for HTTP/2 (will proceed with no errors or bandwidth limiting).
Here is the link,I hope it could help you.
Jul 23, 2019 02:12 AM|brooksy60|LINK
After investigation of the library being used, I have resolved this issue.
The library was written a long time ago, and was writing the headers and body using the WriteClient method. As soon as this happens, the connection was downgraded.
The solution was to refactor the code to use the ServerSupportFunction with the HSE_REQ_VECTOR_SEND request function to write headers and body. So not only do we now have HTTP2 support, but also a bit more performance!
This has been tested on Windows Server 2016 and Windows 10 Professional.