Visual Studio IIS Express、ASP.NET核心-无效的URI:无法解析主机名

mtb9vblg  于 2022-11-17  发布在  .NET
关注(0)|答案(7)|浏览(514)

我周末回来,去调试我的Web项目,它是一个ASP.NET核心Web API。它开始给我一个错误:无效的URI:无法解析主机名。
我可以开始一个新的asp.net核心web api项目,它调试得很好,所以我很确定它与我的配置为这个项目的东西。任何想法?
占士

kadbb459

kadbb4591#

解决方法:
1.关闭Visual Studio
1.移除.vs文件夹
已修复:)

093gszye

093gszye2#

我贴出这个答案是因为很多人觉得我的评论很有用。感谢@joshcomley戳我。
希望这个答案能帮助一些人:
1.在解决方案文件夹中,找到名为.vs的子文件夹(注意,此文件夹具有隐藏属性,因此文件资源管理器默认情况下不显示它)
1.打开.vs/config/applicationhost.config文件
1.在文件中找到<site name="<Your_Web_Site_Name>" ....这样的元素。你可以有几个这样的元素。你需要选择一个<Your_Web_Site_Name>与你的站点名称匹配的元素
1.在<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替换为以下行:<binding protocol="http" bindingInformation="*:8080:*" />。并在此更改后执行iisreset
yeotifhr

yeotifhr3#

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

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

1cklez4t

1cklez4t4#

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

uqzxnwby

uqzxnwby5#

这个错误表示您的网站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进行访问。

kuarbcqp

kuarbcqp6#

我遇到了类似的问题,在管理员模式下运行Visual Studio为我解决了这个问题。

g6ll5ycj

g6ll5ycj7#

我的答案是@Javier Pazos的变体
在我的例子中,转到项目属性,我的URI是正确的,x1c 0d1x
但是,我的环境变量是错误的(这发生在更新VS之后)

因此,在此处将“*”替换为localhost

相关问题