ERR_CONNECTION_RESET and ERR_HTTP2_PROTOCOL_ERROR

The connection is reset because HTTPS is not enabled yet or the application crashed.

The browser shows ERR_CONNECTION_RESET ("This site can't be reached – the connection was reset") or ERR_HTTP2_PROTOCOL_ERROR instead of your website, although the application looks deployed correctly. Both errors mean that the connection was closed before a complete response arrived. There are two usual reasons.

1. You open https:// but HTTPS is not enabled

Every website starts with http:// only. When a browser opens https://yourdomain.com and there is no certificate bound to the domain, the server has nothing to answer on port 443 and the connection is reset. This is by far the most common cause right after the first deployment of an API or a single-page application whose front end calls https://.

  1. Check the plain address

    Open http:// (not https://) followed by your address. If the website works there, HTTPS is simply not enabled yet.

  2. Enable HTTPS

    On Premium go to Websites → your website → HTTPS and click Enable HTTPS with Let's Encrypt. On the Free plan upload your content first and ask our support to enable HTTPS. See Enable HTTPS with Let's Encrypt.

  3. Wait a few minutes

    It can take up to 10 minutes until https:// works for everyone.

If you enabled HTTPS Redirect before HTTPS itself worked, the http:// address redirects to the failing https:// one. Switch the redirect off until the certificate is in place — see Redirect all visitors to HTTPS.

2. The application crashes while handling the request

If https:// is enabled and some requests — often only specific API calls or downloads — end with ERR_HTTP2_PROTOCOL_ERROR or ERR_CONNECTION_RESET, the process of your application ended in the middle of the response. Typical reasons are an unhandled exception in a background thread, a stack overflow, or the memory limit being reached while building a large response (for example a report returned as a byte array).

  1. Read the website logs

    Open Logs for the website in the Control Panel and look at the entries from the time of the error. See Read the website logs.

  2. Turn on debug logging

    If the log does not show the exception, enable ASP.NET Core debug logging and reproduce the request.

  3. Check the resources

    On the Resources page compare the memory usage with the limit of the website. A process that exceeds the limit is stopped immediately. See Increase the memory (RAM) of a website.

Still not clear?

  • Test the address from check-host.net. If it works from other locations, the problem is on your network, your internet provider or your device — try another network, for example mobile data.
  • If the whole website returns 503 instead, see AppPool is not enabled on server.
Still stuck? Our support team is happy to help.
Ask the community Open a support ticket