连接到Visual Studio通过局域网debuggingIIS Express服务器

我有一个在VS2012开发的testingASP.NET MVC3应用程序。 当我开始debugging时,通过请求http://localhost:<portnumber>从主机访问应用程序。 但是,如果我尝试通过http://<ip>:<portnumber>从Intranet中的远程计算机访问相同的应用程序,则会出现HTTP error 400: Bad request. Invalid Host Name. HTTP error 400: Bad request. Invalid Host Name. 只要在IIS Express上运行,任何服务器configuration都无法访问。

有没有解决这个问题的方法?

更新

我做了一个video,更好地描述了这个过程, https://youtu.be/5ZqDuvTqQVs

如果您使用的是VS2013或更高版本,请确保以pipe理员身份运行它以使其正常工作。


打开%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config (在VS2015中它可能是$(solutionDir)\.vs\config\applicationhost.config .vs $(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:可以删除asterix。

然后确保您的防火墙允许在该端口上传入连接。 您可能需要重新启动系统或至lessVisual Studio才能让IISExpress重新加载configuration文件。

如果这不起作用,请看这个答案: https : //stackoverflow.com/a/5186680/985284

除了修改iisexpressconfiguration文件外,有时候还需要像下面那样运行命令。

netsh http add urlacl url = http:// *:49419 / user = Everyone

由于我无法对@Garret Fogerlie的post添加评论,并回复评论者的问题(@ Y.Ecarri和@SamuelEdwinWard),我遵循了Garret的build议,使用Visual Studio 2013,在Admin模式下运行它并更改application.config文件。

启动debugging后,看到我得到了同样的错误信息,我回到了application.config ,看到我的网站的新条目已经被创build就像Y.Ecarri的问题。

所以我停止debugging, 保持我的解决scheme在Visual Studio中打开 ,并再次编辑application.config文件的新条目。 我也完全删除*唱歌和localhost ,所以我有以下新条目:

<binding protocol="https" bindingInformation=":44300:" />

VisualStudio 2015非pipe理员

  1. 在您的解决scheme目录中,在.vs\config\applicationHost.config文件中更改该行

    <binding protocol="http" bindingInformation="*:44302:localhost" />

    <binding protocol="http" bindingInformation=":44302:" />

    (44302是你的港口)

  1. 从pipe理员命令提示符下:

    一世。 启用非pipe理员绑定到端口

    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

  1. 从VisualStudio开始debugging

如何避免以pipe理员身份运行Visual Studio

使用Garret's和@ shangkeyun的答案,您可以实现连接到正在运行的网站,而无需以pipe理员用户身份运行Visual Studio:

  1. 打开%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
  2. 使用name=MySiteNamesearch您的网站
  3. 复制<bindings>部分中现有的<binding>项目。 你现在应该有两行binding
  4. 去除bindingInformation中的“localhost”部分。
  5. 现在应该看起来像这样,假设端口是12345

     <binding protocol="http" bindingInformation="*:12345:localhost" /> <binding protocol="http" bindingInformation="*:12345:" /> 
  6. 以pipe理员身份运行以下cmd,删除所有防火墙限制:

     netsh http add urlacl url=http://*:49419/ user=Everyone 

感谢byteit:

在Documents / IISExpress / config中转到applicationhost.config

find您正在处理的特定网站的条目:

加:

 <binding protocol="http" bindingInformation="*:<your site port>:*" /> 

在现有的前面

  <binding protocol="http" bindingInformation="*:<your site port>:localhost" /> 

为了在没有VS2013的情况下实现解决scheme,请在重新启动时为您创build一个新的网站xml条目。 您将需要以pipe理员身份运行。

这对我来说是有效的:

  • 启动IISpipe理器
  • 添加一个新的虚拟目录,指向项目文件夹(在我的情况下是C:\VSProjects
  • 在IISpipe理器中select新的虚拟目录。 从选项列表中selectDirectory Browsing 。 在右侧有一个Enablebutton。 点击它。

现在我可以通过mypcname\VSProjects\myProj\outputBinViewer访问我的文件夹和项目bin。

经过上面的configuration,我不得不在pipe理模式下运行Visual Studio。

在这里输入图像说明

你们中的一些人可能会花费很多时间使用%USERPROFILE%目录进行修改和testing。 如果您正在VSdebugging上运行,请使用$(solutionDir).vs \ config \ applicationhost.config