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");
}
但是如何显示错误?
谢谢
如果不进行重大更改,最简单的方法是写入文本文件:
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 目录的路径。希望这对您有所帮助。