locked
Does IIS10 support HTTP/2 using ISAPI? RRS feed

  • Question

  • User1651655985 posted

    Hi,

    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,

    Mark 

    Friday, July 12, 2019 2:34 PM

Answers

  • User1651655985 posted

    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.

    Regards,

    Mark

    • Marked as answer by Anonymous Tuesday, September 28, 2021 12:00 AM
    Tuesday, July 23, 2019 2:12 AM

All replies

  • User922093488 posted

    Hi slot niki

    Tuesday, July 16, 2019 6:42 PM
  • User-2114649853 posted

    Hi brooksy60;

    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.

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

    Best Regards

    Able

    Thursday, July 18, 2019 6:35 AM
  • User1651655985 posted

    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.

    Regards,

    Mark

    • Marked as answer by Anonymous Tuesday, September 28, 2021 12:00 AM
    Tuesday, July 23, 2019 2:12 AM