IISExpress returns a 503 error from remote machine

2020-01-25 12:11发布

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?

标签: iis-express
10条回答
Rolldiameter
2楼-- · 2020-01-25 12:42

None of the answers above worked for me.

I have had two entries in netsh for the same service

netsh http show urlacl

enter image description here

One using a strong wildcard, the other one using a weak wildcard.

Removing the one with the weak wildcard did the job.

More about the strong and weak wildcard in the context of netsh

When the host element of a UrlPrefix consists of a single plus sign (+), the UrlPrefix matches all possible host names in the context of its scheme, port and relativeURI elements, and falls into the strong wildcard category.

When an asterisk (*) appears as the host element, then the UrlPrefix falls into the weak wildcard category. This kind of UrlPrefix matches any host name associated with the specified scheme, port and relativeURI that has not already been matched by a strong-wildcard, explicit, or IP-bound weak-wildcard UrlPrefix. This host specification can be used as a default catch-all in some circumstances, or can be used to specify a large section of URL namespace without having to use many UrlPrefixes.

https://docs.microsoft.com/en-gb/windows/desktop/Http/urlprefix-strings

查看更多
smile是对你的礼貌
3楼-- · 2020-01-25 12:43

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.

查看更多
Luminary・发光体
4楼-- · 2020-01-25 12:47

Found the problem had to do with a bad urlacl mapping. To figure this out:

netsh http show urlacl 

and look for things like http://+:80/ or the port you are binding to.

Then use

netsh http delete url=<the url from the list>

This fixed the problem for me.

查看更多
时光不老,我们不散
5楼-- · 2020-01-25 12:48

What helped me, was right clicking the 'IISExpress' icon, 'Show All applications'. Then selecting the website and I saw which aplicationhost.config it uses, and the the correction went perfectly.

IISExpress configuration

查看更多
Explosion°爆炸
6楼-- · 2020-01-25 12:50

The problem is updating the applicationhost.config file inside the web folder instead of the solution's. The solution config file is the one to change

查看更多
仙女界的扛把子
7楼-- · 2020-01-25 12:52

After solution of @vikomall don't forget to start VS as adminisrator. This fix it for me.

查看更多
登录 后发表回答