How do I get IIS working and accessible outside my network behind a router? [closed]

This sounds like an HTTP.SYS issue that you are having.

Below is an excerpt from Scott Hanselman's blog that describes how to expose IISExpress outside of localhost. The blog post is longer which also describes how to all wire up SSL. But I believe the commands that I have posted below which I pulled from his post will help you resolve the issue you are having.

First, we need to tell HTTP.SYS at the kernel level that it's OK to let everyone talk to this URL by making an "Url Reservation." From an administrative command prompt:

netsh http add urlacl url=http://<LocalComputerName>:80/ user=everyone

Next, as I want to be able to talk to IIS Express from outside (folks on my network, etc. Not just localhost) then I need to allow IIS Express through the Windows Firewall. I can do that graphically from Windows, or type:

netsh firewall add portopening TCP 80 IISExpressWeb enable ALL

You may not need the last command since you state that you already created a firewall rule.


  1. (Access from outside your network) Many residential ISPs (and some business ISPs) will block inbound traffic on certain service ports, like port 80 or 25. This is generally to keep you from running business services on a residential line due to bandwidth usage. The alternative is to run it on another port (see below).

  2. (Access from inside your network) The situation you're describing sounds like hairpin NAT. Here is a good high-level overview of Hairpin NAT. You will need to add NAT rules to your router to always make traffic destined for your external IP, port 80 go through your router and not directly from host to host inside your network. Caveat: Your router may not actually be able to do this.

  3. Change the port binding in IIS, then restart the website.