IISExpress returns a 503 error from remote machines
I'm attempting to test a website I have running in a local IISExpress instance with some other machines / devices on my local network. I am running Win7 Pro.
When I first attempt to browse to my machine from another machine on my local network segment, I get a 400 error: Hostname is invalid.
I understand that I need to grant remote access to the ACL with a command on the elevated command prompt like:
netsh http add urlacl url=http://mymachinename:50333/ user=everyone
Now I get a 503 service is unavailable error.
Windows Firewall is currently shut off, and I am able to browse my local IISExpress instance with the address http://localhost:50333
What is the final piece to this configuration puzzle?
Solution 1:
It looks like you are missing a binding information entry in applicationhost.config file.
-
Open your applicationhost.config file. Possible locations are:
%userprofile%\Documents\IISExpress\config\applicationhost.config
-
$(solutionDir)\.vs\config\applicationhost.config
(VS2015) - Failing that, inspect the output from
iisexpress.exe
to be sure.
-
Locate your WebSite entry and add following binding with your machine name.
<binding protocol="http" bindingInformation=":50333:your-machine-name" />
Restart IIS Express
Solution 2:
There was only 1 thing that worked for me.
using *:portnumber:*
was no good. Yes, after doing that and making sure the Windows Firewall was open, I could connect to the port, but I still got the "503" error.
I tested a few things locally, and discovered that only http://localhost worked. Using the real IP address (not 127.0.0.1, but, for instance, 192.168.1.50), still returned a 503 even on the local machine. I tried using the real host name in the bindings, but IIS Express refused to start. This may actually have something to do with how the host name was being resolved. I didn't explore that further.
Finally, I ended up using this configuration:
<binding protocol="http" bindingInformation="*:53351:localhost" />
<binding protocol="http" bindingInformation="192.168.1.50:53351:*" />
In that way, I was able to connect from a remote machine using http://192.168.1.50:53351
.