调试期间如何在ASP.NET(C#)中使用Console.WriteLine?


88

我想将一些结果写入ASP.NET(C#)中的控制台。它可以在Window应用程序中工作,但是Web应用程序不能工作。这是我尝试过的:

protected void btonClick_Click(object sender, EventArgs e)
{
    Console.WriteLine("You click me ...................");
    System.Diagnostics.Debug.WriteLine("You click me ..................");
    System.Diagnostics.Trace.WriteLine("You click me ..................");
}

但是我在“输出”面板中什么也看不到。我该如何解决这个问题?


Answers:


183

Console.Write在ASP.NET中将无法使用,因为使用浏览器进行了调用。改用Response.Write。

请参阅堆栈溢出问题Console.WriteLine在ASP.NET中的位置?

如果要在调试过程中向“输出”窗口中写入内容,可以使用

System.Diagnostics.Debug.WriteLine("SomeText");

但这仅在调试期间有效。

请参阅堆栈溢出问题Debug.WriteLine无法正常工作


6
Response.Write将写入http响应流,我不认为@Leap Bun想要那样
labroo 2012年

@labroo当然。Respone.Write将文本显示给浏览器。我不能用
Bun头2012年

1
@PraveenVenu我已经尝试过System.Diagnostics.Debug.WriteLine(“ SomeText”); 在问题!
Bun头2012年

2
请注意,您可以通过处理Listeners集合来更改System.Diagnostics.Debug的输出。有关更多信息,请参见MSDN
T. Fabre 2012年

我在您的问题中添加的评论没有帮助吗?
labroo 2012年

27

using System.Diagnostics;

只要下拉菜单设置为“ Debug”,以下内容将打印到您的输出中,如下所示。

Debug.WriteLine("Hello, world!");


在此处输入图片说明


9

如果出于任何原因想要捕获的输出Console.WriteLine,则可以执行以下操作:

protected void Application_Start(object sender, EventArgs e)
{
    var writer = new LogWriter();
    Console.SetOut(writer);
}

public class LogWriter : TextWriter
{
    public override void WriteLine(string value)
    {
        //do whatever with value
    }

    public override Encoding Encoding
    {
        get { return Encoding.Default; }
    }
}

2

Trace.Write(“错误消息”)和Trace.Warn(“错误消息”)是在Web中使用的方法,需要修饰页面标头trace = true并在配置文件中隐藏错误消息文本才能结束-user,以便留在iis自身中进行程序员调试。



0

您不应该作为IIS服务器启动。检查您的启动设置,确保它已切换到您的项目名称(在launchSettings.json文件中更改此名称),而不是IIS。

在此处输入图片说明


-1

确保以调试模式(F5)而不是没有调试(Ctrl+ F5)的方式启动应用程序,然后在Visual Studio的“输出”面板中选择“显示来自:调试的输出”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.