ASP.NET MVC 4 文件通过 Ajax 错误日志记录上传

本文关键字:日志 错误 记录 Ajax MVC NET 文件 ASP | 更新日期: 2023-09-27 18:32:07

我有这个ajax调用:

$.ajax({
                                            type: "POST",
                                            url: '/Home/Upload?customerID=' + customerID + "&questionID=" + id + "&community=" + communitySelected + "&lot=" + lotSelected,
                                            data: formData,
                                            dataType: 'json',
                                            contentType: false,
                                            processData: false,
                                            success: function (response) {
                                                alert('success!!');
                                                $("#" + id).attr('disabled', false);
                                            },
                                            error: function (error) {
                                                alert(error);
                                                console.log(error);
                                            }
                                        });

它称之为:

[HttpPost]
        public ActionResult Upload(int customerID, int questionID, string community, int lot)
        {
            for (int i = 0; i < Request.Files.Count; i++)
            {
                    var file = Request.Files[i];
                    string path = Path.Combine(Server.MapPath("~/UploadedFiles"),
                                                   Path.GetFileName(customerID + "-" + community + lot + "-" + questionID + "-" + file.FileName));
                    file.SaveAs(path);
            }
            return Json(new { success = true },
            "text/plain");
        }

现在这一切都在我的本地主机上工作,但是当我将其放在服务器上并尝试上传文件时,我收到 500 错误。我现在要做的是在 .NET 端添加错误日志记录以查看问题到底是什么,所以我的问题是我将如何调整我的 .NET 方法以显示错误。

我试图尝试一下并像这样抓住:

[HttpPost]
        public ActionResult Upload(int customerID, int questionID, string community, int lot)
        {
            for (int i = 0; i < Request.Files.Count; i++)
            {
                try
                {
                    var file = Request.Files[i];
                    string path = Path.Combine(Server.MapPath("~/UploadedFiles"),
                                                   Path.GetFileName(customerID + "-" + community + lot + "-" + questionID + "-" + file.FileName));
                    file.SaveAs(path);
                }
                catch (Exception e)
                {
                    Console.Write(e);
                }
            }
            return Json(new { success = true },
            "text/plain");
        }

但是如何显示错误?

谢谢

ASP.NET MVC 4 文件通过 Ajax 错误日志记录上传

如果不进行重大更改,最简单的方法是写入文本文件:

System.IO.File.WriteAllText(@"C:'SomeFolder'error.txt", text);

确保站点可以写入文件夹。

在 MSDN 上如何写入文本文件有更多选项。

(但是您应该考虑在应用程序中构建适当的错误处理和报告,例如下面的ELMAH。


如果可能,您可以重新引发异常,以便显示 YSOD。

catch (Exception e)
{
    throw;
}

Elmah 是错误日志记录的一个选项。

例如

catch(Exception e)
{
    Elmah.ErrorSignal.FromCurrentContext().Raise(e);
}

另请参阅如何使用 ELMAH 手动记录错误。

您可以为错误日志记录编写一个单独的类,以下是代码框架:

public static class ErrorLog
{
    public static ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    public static void LogError(System.Exception ex)
    {
        try
        {
            log.Error("ERROR", ex);
        }
        catch (System.Exception)
        {
        }
    }
}

当你使用错误日志类时,你可以写如下的东西:

    try
    {
        //Your code here...
    }
    catch (Exception ex)
    {
        ErrorLog.LogError(ex);
        throw;
    }

ErrorLog.Log.Debug("Debug message plus whatever you want to display here");

文件路径可以是绝对路径,如"c:''logs''log.txt",也可以是相对于 bin 目录的路径。希望这对您有所帮助。