【问题标题】:How to log 500 internal server errors [duplicate]如何记录 500 个内部服务器错误 [重复]
【发布时间】:2013-06-29 18:05:08
【问题描述】:

我的一个网页给了我一个:

GET url_plus_query_string_go_here 500 (Internal Server Error)

错误类型。如何设置页面/服务器以便我可以记录这些错误以了解有关它们的更多信息以及它们发生的原因?

【问题讨论】:

  • 查看事件查看器以了解发生了什么。
  • 这个问题可能会在webmasters.stackexchange.com得到更好的回应
  • @RowlandShaw:我不同意。这特定于所使用的技术堆栈,在本例中为 ASP.NET
  • @DanielHilgarth 我认为这更多是关于配置网络服务器以及日志在哪里的问题;当然,代码中有遥测选项,以提高记录的质量等,但您仍然需要知道如何阅读日志。
  • @RowlandShaw:我使用 ELMAH 的建议是针对 ASP.NET 的。它独立于所使用的网络服务器。

标签: c# iis-6 asmx asp.net-3.5 internal-server-error


【解决方案1】:

您可以创建一个 Log.cs 类并使用 write 方法将异常记录到文本文件中。 现在在您的代码中调用此方法(例如在 catch 块中)。使用以下代码创建类 log.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace TestApp
{
public class Log
{
    protected static string GetFileName()
    {
        return "log.txt";
    }

    public Log()
    {

    }

    public static void Write(string message)
    {
        System.IO.File.AppendAllText(GetFullFilePath(), message + Environment.NewLine);
    }



    public static string ReadAll()
    {
        return System.IO.File.ReadAllText(GetFullFilePath());
    }

    private static string GetFullFilePath()
    {
        return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, GetFileName());
    }
}
}

现在应用以下代码插入您的异常或您想要在运行时跟踪的任何其他内容。我在这里只展示了 catch 块,但你可以在代码中的任何地方使用它。

    catch (Exception ex)
        {
          Log.Write(DateTime.Now + "  " + ex.Message + "  Something relevant string");
        }

【讨论】:

  • 这给了我一条错误消息:The name 'path' does not exist in the current context.
  • 添加命名空间 System.IO 即使用 System.IO
【解决方案2】:

您可以使用ELMAH 轻松记录所有异常。

它向您的 ASP.NET 应用程序添加了一个消息处理程序,该处理程序自动将您的异常记录到数据库并提供一个 Web 界面来查看它们。

除了设置数据库和调整 web.config 之外,您无需更改应用程序中的任何内容。特别是,您不必为所有控制器添加 try catch 处理程序。

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多