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

时间:2013-02-06 09:21:54

标签: asp.net asp.net-mvc visual-studio-2012 visual-studio-debugging iis-express

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

有没有办法解决这个问题?

10 个答案:

答案 0 :(得分:126)

<强>更新

我制作了一个更好地描述过程的视频,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>

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

注意:如果不起作用请尝试bindingInformation="*:8080:,可以删除星号。

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

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

答案 1 :(得分:34)

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

答案 2 :(得分:19)

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

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

答案 3 :(得分:10)

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

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

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

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

答案 4 :(得分:6)

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

同时使用Garret's@shangkeyun's answer,您可以实现与正在运行的网站的连接,而无需以管理员用户身份运行Visual Studio:

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

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

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

答案 5 :(得分:1)

感谢byteit:

转到Documents / IISExpress / config

中的applicationhost.config

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

添加:

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

在现有的

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

要在没有VS2013的情况下实现解决方案,请在重新启动时为您创建新的网站xml条目。您需要以管理员身份运行。

答案 6 :(得分:1)

有些人可能会花费大量时间使用%USERPROFILE%目录进行修改和测试。如果您正在 VS debug 上运行,请使用$(solutionDir).vs \ config \ applicationhost.config

答案 7 :(得分:0)

这对我有用:

  • 启动IIS管理器
  • 添加一个指向projects文件夹的新虚拟目录(在我的情况下为C:\VSProjects
  • 在IIS管理器中选择新的虚拟目录。从选项列表中选择Directory Browsing。在右侧有一个Enable按钮。点击它。

现在,我可以通过mypcname\VSProjects\myProj\outputBinViewer访问网络上的文件夹和项目箱。

答案 8 :(得分:0)

完成上述配置后,我必须以管理模式运行Visual Studio。

enter image description here

答案 9 :(得分:0)

如果在 Visual Studio Code 中调试一个非常类似的问题,我通过添加以下内容解决了这个问题:

"env": {
      // ...
      "ASPNETCORE_URLS": "http://*:5000" // change to the port you are using
      // ...
},

..到 launch.json

显然,默认情况下它会将http协议绑定到“localhost:5000&#39;”,因此它可以与 localhost 配合使用,但不能与 ip address 配合使用 - 不能远程使用也不在当地。

如果您尝试通过来自其他计算机的请求来查找断点,请不要忘记检查防火墙设置(和/或防病毒)

希望这会有所帮助