我有一个在VS2012中开发的测试ASP.NET MVC3应用程序。当我开始调试时,可以通过请求从主机访问该应用http://localhost:<portnumber>
。但是,如果我尝试通过http://<ip>:<portnumber>
I从Intranet中的远程计算机访问相同的应用程序,则说明HTTP error 400: Bad request. Invalid Host Name.
它在IIS Express上运行,因此无法访问任何服务器配置。
有什么办法解决这个问题吗?
我有一个在VS2012中开发的测试ASP.NET MVC3应用程序。当我开始调试时,可以通过请求从主机访问该应用http://localhost:<portnumber>
。但是,如果我尝试通过http://<ip>:<portnumber>
I从Intranet中的远程计算机访问相同的应用程序,则说明HTTP error 400: Bad request. Invalid Host Name.
它在IIS Express上运行,因此无法访问任何服务器配置。
有什么办法解决这个问题吗?
Answers:
更新资料
我制作了一段视频,更好地描述了这一过程,https://youtu.be/5ZqDuvTqQVs
如果您使用的是Visual Studio 2013或更高版本,请确保以管理员身份运行它以使其正常工作。
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(在VS2015中可能是$(solutionDir)\.vs\config\applicationhost.config
)文件。在内部,您应该看到类似以下的内容:
<site name="WebSite1" id="1" serverAutoStart="true">
<application path="/">
<virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
</bindings>
</site>
更改bindingInformation=":8080:localhost"
为bindingInformation="*:8080:*"
(端口号,在我的情况下为8080,将有所不同。)
注意:如果不起作用,请尝试bindingInformation="*:8080:
删除星号。
然后,确保防火墙允许该端口上的传入连接。您可能需要重新启动系统或至少重新启动Visual Studio才能使IISExpress重新加载配置文件。
如果这不起作用,请查看以下答案:https : //stackoverflow.com/a/5186680/985284
<site name="Website1(1)" id="2" serverAutoStart="true">
,我仍然无法从其他计算机访问该网站。)
bindingInformation="*:8080:*"
对我没有用,并导致了@ Y.Ecarri遇到问题。最终工作的是删除星号:bindingInformation=":8080:"
。男孩这样做使我发疯,希望它能帮助到某人。
bindingInformation=":8080:"
(不带*)
在您的解决方案目录中,在文件中.vs\config\applicationHost.config
更改该行
<binding protocol="http" bindingInformation="*:44302:localhost" />
至
<binding protocol="http" bindingInformation=":44302:" />
(其中44302是您的端口)
在管理员命令提示符下:
一世。启用非管理员绑定到端口
netsh http add urlacl url=http://*:44302/ user=Everyone
ii。允许通过防火墙
netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=44302 dir=in action=allow
除了修改iisexpress配置文件外,有时还需要运行以下命令。
netsh http添加urlacl url = http:// *:49419 / user =每个人
如何避免以管理员身份运行Visual Studio
使用Garret和@shangkeyun的答案,您可以实现连接到正在运行的网站,而无需以管理员用户身份运行Visual Studio:
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
name=MySiteName
<binding>
该<bindings>
部分中的现有项目。您现在应该有两行binding
。现在假设端口为12345
:
<binding protocol="http" bindingInformation="*:12345:localhost" />
<binding protocol="http" bindingInformation="*:12345:" />
启用非管理员绑定到端口
netsh http add urlacl url=http://*:12345/ user=Everyone
EDIT 2019:gregmac添加了将VS实例列入白名单的步骤。我从不需要这个,但无论如何都要列出来:
netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=12345 dir=in action=allow
由于我无法在@Garret Fogerlie的帖子中添加评论,并且无法响应评论者的问题(@ Y.Ecarri和@SamuelEdwinWard),因此,我按照Garret的建议,使用Visual Studio 2013,以Admin模式运行并更改了 application.config
文件。
启动调试并看到相同的错误消息后,我回到了 application.config
发现已经为我的站点创建了一个新条目,就像Y.Ecarri的问题一样。
因此,我停止了调试,在Visual Studio中将解决方案保持打开状态,然后application.config
再次为新条目编辑了文件。我也只是简单地删除了所有*
唱歌localhost
,因此我在新条目中具有以下内容:
<binding protocol="https" bindingInformation=":44300:" />
感谢byteit:
转到Documents / IISExpress / config中的applicationhost.config
查找您正在处理的特定站点的条目:
加:
<binding protocol="http" bindingInformation="*:<your site port>:*" />
在现有的前面
<binding protocol="http" bindingInformation="*:<your site port>:localhost" />
要在没有VS2013的情况下实现解决方案,请在重新启动时为您创建一个新的网站xml条目。您将需要以管理员身份运行。
在Visual Studio Code中调试时发生了非常相似的问题,我通过添加以下内容解决了该问题:
"env": {
// ...
"ASPNETCORE_URLS": "http://*:5000" // change to the port you are using
// ...
},
..到launch.json
显然,默认情况下,它将http协议绑定到“ localhost:5000”,因此它可与localhost一起使用,但不能与ip地址一起使用-既不是远程也不是本地的。
如果您试图通过来自另一台计算机的请求来达到断点,请不要忘记检查防火墙设置(和/或防病毒软件)
希望这可以帮助