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

Jam*_*ott 8 visual-studio iis-express asp.net-core-webapi

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

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

詹姆士

Szu*_*ubi 13

我遇到过同样的问题.只需关闭VS,删除.vs文件夹,再次打开项目.重建和运行.它应该有所帮助.

  • @JigneshAnsodariya OP遇到了同样的问题并解释了他们是如何解决的.它回答了这个问题. (3认同)

Veg*_*ter 9

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

希望这个答案能帮到某些人:

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

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

并替换为:

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

  1. 重建解决方案和运行网站

笔记:

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

  • 我相信`bindingInformation ="*:8080:*"`不解析,但是`":8080:"`确实如此,`:8080:localhost"` (3认同)
  • 对于任何寻找它的人来说,这都是[[如何允许IIS Express接受远程连接?]]的答案。(/sf/ask/231953151/ -express)(至少在Windows 10和VS 2017上)。我不知道这种情况是否发生了变化,但是现在存在很多错误信息,建议使用“ star”语法,看来IIS Express无法对其进行解析。谢谢@VeganHunter! (2认同)

小智 6

我遇到了同样的问题,并尝试了这篇文章中的其他建议,但它没有 \xc2\xb4t 工作。因此,我转到项目的属性 -> 调试 -> WebServer 设置 \n在那里,我\xc2\xb4ve 用 localhost 替换了 *,这为我解决了问题。\n属性捕获

\n

  • 这是一种正确的方法,因为它也处理 .net core 项目(这些项目没有名为“.vs/config/applicationhost.config”的文件,而是“launchSettings.json”——至少是我们的项目没有)。 (2认同)

Qui*_*ger 5

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

编辑:根据@VeganHunter 的评论*不是有效的主机名。如果您希望它绑定到所有主机名,只需将主机留空。例如:*:80:而不是*:80:*表示“所有网络接口/IP,在端口 80 上,用于所有主机名”。

  • 这里有一个重要的注意事项。当你有一行 &lt;binding protocol="http" bindingInformation="*:5000:localhost" /&gt; IISExpress 只能作为本地主机访问,它不能通过 IP 地址从网络访问。为了让它通过 IP 地址工作,有些人建议像你提到的那样放置一行: &lt;binding protocol="http" bindingInformation="*:5000:*" /&gt; 这实际上对我(和你)不起作用,因为 VS 启动重新启动后显示“无效的 URI:无法解析主机名”错误。对我有用的是: &lt;binding protocol="http" bindingInformation=":5000:" /&gt; (15认同)