我有一个版本为5的程序集的Blazor WASM项目,并试图根据本文激活调试:https://learn.microsoft.com/en-us/aspnet/core/blazor/debug?view=aspnetcore-3.1
为此,我确保更新了所有程序集引用并调整了启动设置。后者现在看起来是这样的:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:62310",
"sslPort": 44325
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"ApplySupportTool.Client": {
"commandName": "Project",
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
这些也是我在WASM项目中的参考资料:
<PackageReference Include="System.Net.Http.Json" Version="3.2.0-preview5.20210.3" />
<PackageReference Include="Microsoft.AspNetCore.Components.DataAnnotations.Validation" Version="3.2.0-preview2.20160.5" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.0-preview5.20216.8" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.0-preview5.20216.8" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="3.2.0-preview5.20216.8" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Runtime" Version="3.2.0-preview5.20216.1" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="3.2.0-preview5.20216.8" />
为了测试,我从默认项目中复制了"计数器"页面。但是当我点击F5调试时,IncrementCount
方法中的断点并没有变红。我在一个新创建的默认项目中进行了测试,它在那里工作,所以我按下Visual Studio Preview,Edge和.net core有正确的版本。
我注意到的是开发控制台中的这个警告,它只出现在我现有的项目中,但没有出现在新创建的默认项目中:
DevTools无法加载SourceMap:无法加载chrome的内容-extension://ndcileolkflehcjpmjnfbnaibdcgglog/include.preload.js.map:HTTP错误:状态代码404,网络::ERR_UNKNOWN_URL_SCHEME
我是否需要添加或调整其他内容才能工作?在上面的文章中,我看不到任何东西。
这是Blazor项目中目前已知的问题。调试器的启动速度比项目程序集慢/快;参见";组件。这是我的解决方案,直到他们解决为止。我在Program.cs中添加了一个延迟,这样当项目在调试模式下启动时,调试器就有时间正确连接。我用了5000毫秒,但如果你的机器比我的慢,你可能不得不增加这个值。
public class Program
{
private static async Task DebugDelayAsync()
{
#if DEBUG
await Task.Delay(5000);
#endif
}
public static async Task Main(string[] args)
{
await DebugDelayAsync();
(...)
}
}
这可能会对某人有所帮助。在我的案例中,我删除了解决方案的隐藏.vs文件夹,断点再次出现。此外,这还修复了Chrome调试无法再工作的问题。
几天前我也发生了类似的事情。
我采取的步骤如下:
- 编辑调试配置文件。在我的情况下,我编辑了端口并删除了https协议选项
- 编译并检查调试点是否再次工作
- 编辑调试配置文件以返回到初始配置。我没有撤消更改,而是重新手工编辑
如果早期的方法不起作用,也可以尝试:
- 从顶部答案实现DebugDelay
- 使用记事本打开[您的项目]\Client\Properties\launchSettings.json
- 在iisSettings..下"applicationUrl":"http://localhost:50454",复制本地主机。http://localhost:50454
- 在Visual Studio IDE中,Debug,[my app].server.Debug*属性/webserver设置/app URL。粘贴到剪贴板中
不要问我为什么它有效,但它确实有效,恼人的"未绑定断点将不会被命中"已经不见了。
自那以后,其中一些错误已经修复。NET 6和6.0.202中SDK的更新。
不再需要使用计时器的解决方法-所以不要走那条路。
但由于环境的不同,仍然存在着各种各样的缺陷和困难。如果你愿意使用Edge(它很好(,那么请参阅我在这里的工作配置答案。
如果以上都不起作用,那么在受信任的根存储中没有localhost的SSL证书也将阻止您调试客户端C#。因此,如果你仍然有一个";不安全连接";请先尝试添加证书。