可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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?
回答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
回答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
.
回答3:
After wasting more than 3h on such a full subject I decided to share my setup with you. My configuration is Visual Express 2012 for Web update 4 on windows 8. This was my first come back to MS VS since studies (at least 8 years) and now I'm sure that linux rules. On django this kind of setup took me 10min of searching documentation.
turn off firewall for testing
netsh advfirewall set allprofiles state off
setup bindings in my case local address is localIP=192.168.1.102 (because links can not contain nonnumeric domain, use it below instead of mylocaldomain.com, see stackoverflow policy) in Documents\IISExpress\config\applicationhost.config
<bindings> <binding protocol="http" bindingInformation="*:53351:mylocaldomain.com" /> <binding protocol="http" bindingInformation="*:53351:localhost" /> </bindings>
add autorun for ISS Express start service automatically
<site name="NeuronCharts" id="2" serverAutoStart="true">
Add some weird rules to http server (I still do not know if this is nesseary)
netsh http add urlacl url=http://mylocaldomain.com:53351/ user=everyone
run IISExpress manually not from VS IDE
- you will see that ISSExpress is registering bindings
- run browser
http://mylocaldomain.com:53351
if it is working then we can add firewall rule add firewall rule
netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=53351 remoteip=any action=allow
set remoteip to any if you want to access you server from outside world if you want to access for local network use localsubnet
start firewall
netsh advfirewall set allprofiles state on
check again if everything is working on local and public ip
Wish you luck
Rafal
回答4:
回答5:
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.
回答6:
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.

回答7:
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