Blazor 服务器端控制台。WriteLine 不起作用

问题描述 投票:0回答:8

在服务器端 Blazor 应用程序上,我发现

Console.WriteLine
不起作用。为什么我在 Chrome 控制台中看不到文字?

@code{

    protected override async Task OnInitializedAsync() 
    {
        System.Console.WriteLine("oninit");
    }
}
blazor
8个回答
29
投票

我必须做这样的事情才能使文本显示在浏览器控制台中:

@inject IJSRuntime jsRuntime

@code {

    protected override async Task OnInitializedAsync()
    {
        await jsRuntime.InvokeAsync<string>("console.log", "hello world");
    }
}

16
投票

当您在 IIS Express 下运行它时,确实没有输出。

您可以使用“运行”按钮上的下拉菜单按名称而不是 IIS 选择应用程序。 然后您将在控制台窗口中看到输出。

或使用

System.Diagnostics.Debug.Print()
在输出窗口中查看它。

我的意思是我看不到 Chrome 控制台中的文本。

这只发生在客户端 (WebAssembly) Blazor。


9
投票

当您通过 IIS Express 或作为应用程序运行时,您可以在输出窗口中看到 Console.WriteLine 输出到您的应用程序 ASP.NET Core Web 服务器。 来自 IIS Express IIS Express 输出配置的图像

作为您的应用程序 运行应用程序的图像 应用程序输出配置的图像

如果您想写入 Web 控制台,您需要在客户端 Blazor 中工作。 这在 github 讨论页面上进行了讨论


5
投票
如何查看 Blazor 应用程序的“控制台输出”(即 Console.WriteLine 语句):

    转到 Visual Studio 中的“输出”选项卡
  • 在“显示输出:”下拉列表中,选择您的应用程序而不是“调试”
  • 现在您可以看到任何 Console.Writeline 语句现在出现在 Visual Studio 的输出窗口中
(已在 Visual Studio 2019 中测试)


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); } }
    

2
投票
使用System.Diagnostics.Debug.Print(),您将在Visual Studio的输出窗口中的“debug”下拉列表中看到结果。如果您想在浏览器的控制台窗口中查看结果,请参阅已经给出的其他答案。


1
投票
确实对于服务器端 blazor 这不起作用,

enter image description here

在下拉列表中从“调试”更改为您的应用程序名称,以查看控制台输出:

enter image description here


0
投票
对我来说 System.Diagnostics.Trace.WriteLine("..") 写入 Visual Studio 调试输出。

© www.soinside.com 2019 - 2024. All rights reserved.