为什么在 Edge 中调试我的 asp.net 核心 2.0 应用程序时显示 "You'll need a new app to open this localhost" 弹出窗口?

Why is a "You'll need a new app to open this localhost" popup being displayed when debugging my asp.net core 2.0 app in Edge?

我只是在 localhost:51531/ 之后输入 "MyMessages/Index" 并显示此弹出窗口。对我来说似乎很奇怪,但可能很简单。

所以我尝试在 Edge 中导航到 localhost:51531/MyMessages/Index

控制器是public class MyMessagesController : Controller

控制器动作只是:

public IActionResult Index()
{
    return View();
}

知道为什么会这样吗?

这在 IE11 中不会发生

问题是您在 URL 的开头留下了 scheme一些浏览器会推断 它在某些情况下,但并非所有浏览器都会一直推断它。

而不是:

localhost:51531/MyMessages/Index

尝试:

http://localhost:51531/MyMessages/Index

尝试将 http:// 添加到 URL 之前。 Edge 似乎将 localhost 解析为 URI scheme,这就是为什么 Windows 无法找到用于打开它的应用程序的原因 - 可能 您的计算机上没有注册到 localhost.

的应用程序
http://localhost:51531/MyMessages/Index

似乎 no-brainer 可以推断出 http://,但请记住,导航至例如file://C:\Users\[Username]\Desktop\document.txt 在任何网络浏览器中 打开文件 - 所以当浏览器看到 看起来 像 URI 方案的东西时(例如 localhost:51531), 假设它是一个确实有意义。

当使用尚未注册到应用程序的方案输入 URL 时,会出现 "You'll need a new app to open this" 对话框。自定义 application-specific 方案的一个例子是 steam://[appid] URL 方案,或者经常被 Outlook 使用的 mailto://[address] 方案。

(另见 What is a URI scheme?

添加 http 前缀的简单选项似乎不错,但假设您按下 Ctrl+R(开发人员经常这样做)然后出于奇怪的原因它仍然弹出应用程序打开,这很烦人。 我能够通过添加 dns 条目 (etc/hosts) 使其工作,这样 "Edge" 现在必须知道本地主机是什么。

127.0.0.1       localhost