【问题标题】:Unable to debug Blazor hosted webassembly 3.2.0 from Visual Studio 2019 16.6.2无法从 Visual Studio 2019 16.6.2 调试 Blazor 托管的 webassembly 3.2.0
【发布时间】:2020-10-02 13:46:49
【问题描述】:

我已安装 Visual Studio 2019 16.6.2,以及 .NET Core 3.1.301 SDK 和所有必要的 Blazor 模板。

如果我创建一个全新的 Blazor WebAssmbly 应用程序,我可以通过按 Ctrl+F5 从 Visual Studio 运行它,它会在我的活动浏览器窗口中打开一个新选项卡并开始正常。

但是当我按下 F5 时,会打开一个新的、单独的浏览器窗口(这有点烦人),但页面会在 about:blank 停留一段时间,直到 Visual Studio 中出现错误消息:

Failed to launch debug adapter.  Additional information may be available in the output window.

Unable to launch browser: 
"Could not open wss://localhost:5001/_framework/debug/ws-proxy?browser=wsAFFlocalhostA50821FdevtoolsFbrowserFceed3b95-58ac-470a-b10c-5d139cfd7117": timeout after 60000ms

Blazor WebAssembly 应用程序是否“托管”没有区别。

我已按照Enforce HTTPS in ASP.NET Core 中的步骤进行操作,但这并没有什么不同。

如果在等待 about:blank 窗口崩溃时,我在浏览器选项卡上手动打开客户端 url,应用程序加载并命中调试器断点。 在它继续崩溃之前的短时间内,如果我点击 Shift+Alt+D总是以下错误:

Unable to find debuggable browser tab
Could not get a list of browser tabs from http://127.0.0.1:9222/json. Ensure your browser is running with debugging enabled.

Resolution

If you are using Microsoft Edge (80+) for your development, follow these instructions:
Press Win+R and enter the following:

msedge --remote-debugging-port=9222 --user-data-dir="C:\Users\sergi\AppData\Local\Temp\blazor-edge-debug" --no-first-run https://localhost:44372/

无论我多久运行一次命令(关闭所有浏览器实例、重新启动等),我每次都会得到这个。

Edge 84 (Edgium) 和 Chrome 都会出现这种情况。

我应该能够创建一个新的 Blazor WebAssembly 应用并在 Visual Studio 上按 F5 开箱即用。我错过了什么?

更新

我刚刚尝试在 Visual Studio 中使用“旧 Edge”(EdgeHtml) 和 Firefox 作为调试浏览器,两者都按预期工作(这意味着应用程序至少在按 F5 时启动)。问题似乎是基于 Chromium 的浏览器然后......

更新 2

@JamesHancock 在 cmets 中发布了一个足够简单的解决方法。如需完整解决方案(和解释),请联系 ASP.NET Core 团队I've logged a Github issue

【问题讨论】:

  • 使用 Chrome 调试 Blazor - 更可靠
  • @MisterMagoo,我已经尝试过 Chrome 和 Edge 84 (Edgium)。结果相同。
  • 你做了 Win+R 的事吗?
  • 要尝试的另一件事是关闭 VS,删除项目/解决方案文件夹中的 .vs 文件夹,然后重试
  • @JamesHancock,你说得对,这也适用于我。只需从服务器项目的launchSettings.json 中删除IIS Express 部分似乎就足够了。显然,VS 将启动 Kestrel,并且按预期工作。现在足够好的解决方法;如果你愿意,你可以把它写成答案......

标签: visual-studio-2019 blazor visual-studio-debugging blazor-client-side blazor-webassembly


【解决方案1】:

对我来说,我在Startup.Configure() 中缺少app.UseWebAssemblyDebugging();。希望这对某人有所帮助。

【讨论】:

  • @blightly,谢谢,但不幸的是,这不是我的情况。 ` app.UseWebAssemblyDebugging();` 在我尝试过的项目中已经默认添加,因为我使用的是最新版本的 Blazor Wasm 模板
  • 我错误地注释了该​​行并导致错误“无法启动调试适配器”。显示。
  • 谢谢,有帮助!我将我的 Balzor 服务器端转换为客户端应用程序,但错过了添加这一行
【解决方案2】:

问题似乎在于,如果您从项目的 launchSettings.json 文件中删除 IIS Express 部分,则调试将无法正常工作。即使您在没有 IIS 代理或 VS.net 的情况下直接对项目使用 VS 代码也是如此。

因此,解决方案是将 IIS Express 部分放回 launchsettings.json 文件中,在解决此问题之前不要将其删除。

【讨论】:

  • 好吧,在我的情况下,它实际上是从允许我调试的服务器项目的launchSettings.json删除 IIS Express 部分。
【解决方案3】:

搜索了几天后,我做了以下事情,效果很好:

1.安装IE“微软边缘”

2.使用 IE "Microsoft edge" 作为你的 VS。浏览器(非 Chrome

3.将您的应用程序用作服务器(NOT IIS EXPRESS)。

享受。

【讨论】:

  • 谢谢哈姆丹。我在 Chrome 和本地 IIS 上遇到了类似的问题。我的 webAssembly 应用程序在不调试的情况下运行良好,但在调试模式下,当我尝试导航到主页时,它以代码 0 退出,但仅在调试时运行。我在上面尝试了您的解决方案并切换到 Edge,将应用程序作为服务器运行,它现在也可以在调试模式下运行。调试模式下的 Chrome 或 IIS 似乎存在一些问题。
【解决方案4】:

这听起来非常幼稚,但这就是我的全部问题。 我没有注意到差异中删除了这一行。

确保您的主构建并运行CreateHostBuilder 函数。

不幸的是,这会导致上述相同的错误,但根本不直接相关。

public static void Main(string[] args)
{
    CreateHostBuilder(args).Build().Run();
}
...
public static IHostBuilder CreateHostBuilder(string[] args)
...

【讨论】:

    【解决方案5】:

    如果我在创建项目时选择 Configure For HTTPS 选项,就会出现问题。


    作为一种解决方法,

    1. 对于 HTTPS 配置的项目,更改为 settings-sslport,更改为 0
    2. applicationUrl 仅对 http://localhost:portlaunchsettings.json

    我认为调试适配器存在潜在的安全相关问题。祝你好运!

    【讨论】:

    • 在一场看似无休止的战斗之后。当我想 ? 时使用 HTTP,可以。 HTTPS 仍在生产中?。
    【解决方案6】:

    有一个加载完美的项目。放了几个星期,当我今晚再次打开它时,我遇到了这个问题。

    在 launchsettings.json 我有这个(项目模板中的所有默认值,我没有更改任何内容)

     "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    

    我删除了这一行

      "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
    

    按 F5 就可以了!

    然后我再次插入它,它仍然有效。

    【讨论】:

      猜你喜欢
      • 2020-12-20
      • 2021-05-20
      • 2020-09-15
      • 2020-05-19
      • 1970-01-01
      • 2020-11-08
      • 2020-04-03
      • 2021-06-25
      • 1970-01-01
      相关资源
      最近更新 更多