连接到Visual Studio通过LAN调试IIS Express服务器

gat*_*r88 77 asp.net asp.net-mvc visual-studio-debugging iis-express visual-studio-2012

我有一个在VS2012中开发的测试ASP.NET MVC3应用程序.当我开始调试时,通过请求从主机访问应用程序http://localhost:<portnumber>.但是,如果我试图通过从远程计算机访问企业内网中相同的应用程序http://<ip>:<portnumber>,我得到HTTP error 400: Bad request. Invalid Host Name.至于它运行在IIS发表任何服务器配置无法访问.

有什么方法可以解决这个问题吗?

Gar*_*lie 133

更新

我制作了一个更好地描述过程的视频,https://youtu.be/5ZqDuvTqQVs

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


打开%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>
Run Code Online (Sandbox Code Playgroud)

更改bindingInformation=":8080:localhost"bindingInformation="*:8080:*"(端口号,在我的情况下为8080,将有所不同.)

注意:如果不起作用,bindingInformation="*:8080:可以删除asterix.

然后确保您的防火墙允许该端口上的传入连接.您可能需要重新启动系统或至少Visual Studios才能让IISExpress重新加载配置文件.

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

  • 这个解决方案对我不起作用.在VS2013中,修改bindingInformation属性后,当我打开IDE并加载项目时,它会创建一个新条目(即`<site name ="Website1(1)"id ="2"serverAutoStart ="true">``我仍然无法从另一个计算机访问该网站. (30认同)
  • 我不知道为什么我似乎是唯一一个有这个问题的人,但是`bindingInformation ="*:8080:*"`对我来说不起作用,导致@ Y.Ecarri遇到的问题.最终结束工作的是丢弃星号:`bindingInformation =":8080:"`.男孩这样做让我发疯,我希望它可以帮助别人. (20认同)
  • 为我工作.主要调整是以管理员身份运行visual studio. (9认同)
  • 这在VS2013中对我有用:http://gilesey.wordpress.com/2013/04/21/allowing-remote-access-to-your-iis-express-service (5认同)
  • 与Drazen相同,不得不使用Admin模式+`bindingInformation =":8080:"`(不带*) (5认同)
  • 我发现为了防止VS创建一个新的条目,我可以复制绑定元素,并使用`*`和一个`localhost` (3认同)
  • 这也适用于VS2013,只需确保您在管理员帐户下运行VS. (2认同)
  • 这个答案是正确的,但已经过时了。VS 2015 将 applicationhost.config 存储在 {solutiondir}\.vs\config (2认同)
  • `bindingInformation="*:49942:"` 在 vs 2015 中对我有用。必须以管理员身份运行,否则它会继续在 `.vs/config/applicationhost.config` 中附加另一个新配置 (2认同)
  • 这对我有用。我使用的是 Visual Studio 2019,因此我的配置文件位于我的 .vs 文件夹中,而不是在我的文档中。其余程序保持不变。 (2认同)

gre*_*mac 38

VisualStudio 2015非管理员

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

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

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

    (44302是你的港口)


  1. 从管理员命令提示符:

    一世.启用非管理员绑定到端口

    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开始调试


小智 20

除了修改iisexpress配置文件外,有时您还需要运行如下命令.

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


hva*_*an3 10

由于我无法在@Garret Fogerlie的帖子中添加评论并回应评论者的问题(@ Y.Ecarri和@SamuelEdwinWard),我遵循Garret建议的,使用Visual Studio 2013,在管理模式下运行并更改application.config文件.

在启动调试并看到我收到相同的错误消息后,我回过头来application.config看到我的网站的新条目已经创建,就像Y.Ecarri的问题一样.

所以我停止了调试,在Visual Studio中保持我的解决方案打开,并application.config再次为新条目编辑文件.我也完全删除了*唱歌localhost,所以我对新条目有以下内容:

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

  • 它帮助.可能需要更长时间才能弄清楚它是否是评论.谢谢!!! (2认同)

oli*_*ren 10

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

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

  1. 打开 %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
  2. 使用搜索您的网站 name=MySiteName
  3. 复制<binding><bindings>部分中的现有项目.你现在应该有两行binding.
  4. 删除bindingInformation中的"localhost"部分.
  5. 它现在应该是这样的,假设端口是12345:

    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:" />
    
    Run Code Online (Sandbox Code Playgroud)
  6. 通过以管理员身份运行以下cmd来删除所有防火墙限制:

    netsh http add urlacl url=http://*:12345/ user=Everyone
    
    Run Code Online (Sandbox Code Playgroud)

  • 添加netsh将错误更改为"服务不可用" (6认同)