Blazor 服务器端 Console.WriteLine 不起作用
Posted
技术标签:
【中文标题】Blazor 服务器端 Console.WriteLine 不起作用【英文标题】:Blazor Server Side Console.WriteLine not working 【发布时间】:2020-01-05 03:12:12 【问题描述】:我想知道我是否遗漏了一些东西,但刚刚为服务器端 Blazor 启动了一个基本模板,发现 Console.WriteLine 不起作用。我的意思是我在 Chrome 控制台中看不到文本。
@code
protected override async Task OnInitializedAsync()
System.Console.WriteLine("oninit");
【问题讨论】:
就我而言,我使用的 Console.Write("...") 不起作用。 Console.WriteLine("...") 似乎工作。不知道为什么两者都不会写入浏览器控制台。 【参考方案1】:我必须这样做才能在浏览器控制台中显示文本:
@inject IJSRuntime jsRuntime
@code
protected override async Task OnInitializedAsync()
await jsRuntime.InvokeAsync<string>("console.log", "hello world");
【讨论】:
对于使用服务器端托管模型的人:您可以使用OnAfterRenderAsync
而不是OnInitializedAsync
进行测试。
仅 InvokeVoidAsync - 你想要什么回报?【参考方案2】:
当您在 IIS Express 下运行它时,确实没有输出。
您可以使用“运行”按钮上的下拉菜单按名称而不是 IIS 来选择您的应用程序。然后您将在控制台窗口中看到您的输出。
或使用System.Diagnostics.Debug.Print()
在输出窗口中查看。
我的意思是我在 Chrome 控制台中看不到文本。
这只发生在客户端 (WebAssembly) Blazor 中。
【讨论】:
或者您可以在 VS 输出窗口的“显示输出”下拉菜单中选择您的项目以查看控制台消息...如果您使用的是 IIS Express 并希望查看 Console.WriteLine 消息。 伟大的会尝试。谢谢【参考方案3】:如何查看 Blazor 应用程序的“控制台输出”(即 Console.WriteLine 语句):
转到 Visual Studio 中的“输出”选项卡 在“显示输出自:”下拉菜单中,选择您的应用而不是“调试” 现在您可以看到任何 Console.Writeline 语句现在出现在 Visual Studio 的“输出”窗口中(已在 Visual Studio 2019 中测试)
【讨论】:
下拉列表中根本没有应用名称。输出曾经工作,但突然停止工作。 Console.WriteLine 和 System.Diagnostics.Debug.WriteLine 都消失了;不在输出窗口中,也不在控制台窗口中。运行 VS 2019 16.9.4(截至目前的最新版本)。 ... 在 VS 中打印输出之前(输出窗口或控制台窗口)。现在我在 Web 浏览器控制台中发现了它们...... 请将此作为答案【参考方案4】:当您通过 IIS Express 运行或作为应用程序运行时,您可以在输出窗口中看到 Console.WriteLine 输出到您的应用程序 ASP.NET Core Web 服务器。 来自 IIS Express image of IIS Express Output Configuration
作为您的应用程序 image of running though your application image of your application Output Configuration
如果要写入 Web 控制台,则需要在 Client Side Blazor 中工作。 这是讨论on github discussion page
【讨论】:
【参考方案5】:在浏览器开发者工具控制台中编写消息。在 Blazor 服务器上有用。在 Blazor WASM 中,我们可以使用 Console.WriteLine() 或相同的策略。
@page "/sample-log"
@inject IJSRuntime _js
<!-- html -->
@code
protected async override Task OnInitializedAsync()
await Log("Initialized"); // test
async ValueTask Log(string text)
await _js.InvokeVoidAsync("console.log", text);
【讨论】:
【参考方案6】:确实对于服务器端 blazor 这不起作用,
在下拉列表中从 Debug 更改为您的应用名称以查看您的控制台输出:
【讨论】:
以上是关于Blazor 服务器端 Console.WriteLine 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Blazor 服务器端应用程序中的 Razor 页面导航到 Blazor 组件?