IIS Express,ASP.NET Core - 无效的URI:无法解析主机名

时间:2017-03-14 14:59:31

标签: visual-studio iis-express asp.net-core-webapi

从我的周末回来并去调试我的web项目,这是一个ASP.NET Core Web Api。它开始给我一个错误:无效的URI:无法解析主机名。

我可以启动一个新的asp.net核心web api项目,它调试得很好,所以我很确定这个项目的配置。有什么想法吗?

詹姆斯

6 个答案:

答案 0 :(得分:11)

我有同样的问题。只需关闭VS,删除.vs文件夹,再次打开项目。重建&跑。它应该有所帮助。

答案 1 :(得分:5)

我发布这个答案是因为很多人发现我的评论很有用。感谢@joshcomley戳我。

希望这个答案可以帮到某人:

  1. 在您的解决方案文件夹中找到名为.vs的子文件夹(请注意,此文件夹具有隐藏属性,因此默认情况下文件资源管理器不会显示该文件夹)
  2. 打开.vs/config/applicationhost.config档案
  3. 在文件中找到<site name="<Your_Web_Site_Name>" ....之类的元素。你可以有几个像这样的元素。您需要选择<Your_Web_Site_Name>与您网站名称匹配的地方
  4. <site元素内找到一个子元素,如:
  5. <binding protocol="http" bindingInformation=":8080:localhost" />

    并将其替换为:

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

    1. 重建解决方案和运行网站
    2. 注意:

      • 以端口号8080为例。您应该分配实际用于网站的端口。
      • 此修复程序适用于 IISExpress 中托管的网站。它还允许避免错误消息,如Invalid URI: The hostname could not be parsed
      • 如果您的网站使用 IIS ,您可以尝试使用此行替换绑定: <binding protocol="http" bindingInformation="*:8080:*" />。并且在此更改后执行iisreset

答案 2 :(得分:4)

Jakub的答案确实解决了这个问题,因为它导致Visual Studio重新生成applicationhost.config。在我的情况下,错误是说无法解析<binding>标记的值。我有以下内容: <binding protocol="http" bindingInformation="*:5000:*" /> 再生时看起来像这样: <binding protocol="http" bindingInformation="*:5000:localhost" /> 该文件位于“.vs”文件夹的“config”子文件夹中,而不是删除整个目录,只需将<binding>标记修复/恢复为可以解析的值即可。

答案 3 :(得分:1)

此错误表示您网站的bindingInformation格式不正确。

bindingInformation的值由三部分组成。

ip:port:host

以下是一些绑定格式及其结果:

<!-- Configures the site with a hostname of "www.test.com" on port 80 for the IP address of 192.168.1.10. -->
<binding protocol="http" bindingInformation="192.168.1.10:80:www.test.com" />

<!-- Configures the site with a hostname of "localhost" on port 80 for the IP address of 192.168.1.10. -->
<binding protocol="http" bindingInformation="192.168.1.10:80:localhost" />

<!-- Configures the site without a hostname and IP address on port 80. You'd use this setting to make your site directly accessible via any address that the system has, including the localhost address at 127.0.0.1, as well as any and all configured IP addresses. -->
<binding protocol="http" bindingInformation=":80:" />

<binding protocol="https" bindingInformation="*:443:" />
<!-- Configures HTTPS bindings for all IP addresses over port 443. -->

使用上述所有绑定,您可以将协议设置为https,以使您的网站只能通过SSL访问。

答案 4 :(得分:1)

我遇到了同样的问题,并在这篇文章中尝试了其他建议,但是没有用。所以我去了项目的属性->调试-> WebServer设置 在那里,我用本地主机替换了*,这为我解决了这个问题。 Properties capture

答案 5 :(得分:0)

我遇到了类似的问题,并且以管理员模式运行Visual Studio为我解决了该问题。