通过Ajax错误记录的ASP.NET MVC 4文件上载

时间:2016-01-27 20:05:53

标签: c# jquery asp.net ajax asp.net-mvc

我有这个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");

        }

但如何显示错误?

谢谢,

2 个答案:

答案 0 :(得分:1)

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

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

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

How to Write to a Text File on MSDN还有更多选项。

(但您应该考虑构建正确的错误处理并向应用程序报告,例如下面的ELMAH。)

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

catch (Exception e)
{
    throw;
}

Elmah是错误记录的选项。

E.g。

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

另见how to use ELMAH to manually log errors

答案 1 :(得分:0)

您可以为错误记录编写单独的类,这里是代码框架:

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

使用Errorlog类时,您可以编写如下内容:

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

OR

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

文件路径可以是绝对路径,如&#34; c:\ logs \ log.txt&#34;或者相对于bin目录的路径。希望这可以帮到你。