Friday, December 14, 2012

How to enable remote/external requests/connections on IIS Express

First you need to open your firewall to let through TCP connections on the local port(s) that you run IIS Express on, typically 8080.

Secondly you have to configure HTTP.SYS to allow your application, running as a standard user, to listen to external traffic over the wire. You can do this on Windows 7 or Windows 8 by running the following command from an administrative prompt:
netsh http add urlacl url=http://[your-machine- name]:8080/ user=everyone

And last but not least you might be missing a binding information in applicationhost.config. You can find it in your user profile (%userprofile%\Documents\IISExpress\config\applicationhost.config). Locate your site under the <Sites> node. Since there are potentially a whole bunch of sites there you can find it by searching for the physical path in which all files for your site belongs. Now add a binding with your machine name:
<binding protocol="http" bindingInformation=":8080:[your-machine-name]" />
Finally, don’t forget to restart IIS Express for this change to carry into effect.


Jim said...

Another, simpler option is to use our Visual Studio extension 'Conveyor', which does everything for you without touching any configuration files or your project.

Jimmy Stormig said...

Thanks Jim, that´s a great tip and a nice extension you´ve created. I will definitely try it out the next time I need to expose my dev webserver.