c# - 处理 ajax 500 “内部服务器错误”
问题描述
一个已经被问过很多次的问题......但我似乎无法让它发挥作用!
我只需按一下按钮即可导入大量文件。有时它会因任何原因而失败,如果文件导入失败,我会尝试 {} catch {} 错误。所有其他文件仍然可以成功。
之后,我将返回一个带有“ImportFileResult”类的 PartialView。但是由于某种原因,即使处理了异常,Jquery 结果仍然进入'fail()',但我只想要我的'ImportFileResult'列表并显示一个很好的已导入或未导入文件列表。
我可以看到 importGasResultsDto 看起来不错。
这种情况下的错误是一个 SQL 错误,其中数据将被截断,这对于目前和我的测试用例来说都很好。chrome 控制台显示此错误,而不是我的列表成功。
相关代码:
$(document).on('click', '#btn-import', function (e) {
e.preventDefault();
$.ajax({
type: "POST",
url: 'App/Gas/Import'
}).done(function (data) {
$('#validationErrorsDiv').html(data );
}).fail(function (data, textStatus, errorThrown) {
}).always(function (data) {
});
});
控制器部分:
public IActionResult Import()
{
var importGasResultsDto = new List<ImportGasResultDto>();
foreach (var file in Directory.GetFiles(@"\\importfolder").Where(c => c.EndsWith("xls") || c.EndsWith("xlsx")))
{
var gasReport = new GasReportDto();
string filename = Path.GetFileName(file);
var splittedFilename = filename.Split('_');
gasReport.Grant = splittedFilename[2].Trim();
gasReport.ContentType = System.Web.MimeMapping.GetMimeMapping(filename);
gasReport.FileContent = System.IO.File.ReadAllBytes(file);
gasReport.Filename = filename;
importGasResultsDto.Add(_gasAppService.InsertGasReports(gasReport));
}
return PartialView("_ImportResult", importGasResultsDto);
}
存储库:
public ImportGasResultDto InsertGasReports(GasReportDto gasReportDtos)
{
ImportGasResultDto importGasResultDto = new ImportGasResultDto();
var roles = _roleManager.Roles.ToList();
var gasReport = ObjectMapper.Map<GasReport>(gasReportDtos);
try
{
importGasResultDto.Filename = gasReport.Filename;
importGasResultDto.Id = _gasRepository.InsertAndGetId(gasReport);
if (importGasResultDto.Id > 0)
{
importGasResultDto.IsError = false;
importGasResultDto.Message = "Imported successfully.";
}
else
{
importGasResultDto.IsError = true;
importGasResultDto.Message = "Something went wrong, please contact your administrator";
}
}
catch (Exception ex )
{
importGasResultDto.IsError = true;
importGasResultDto.Message = ex.InnerException != null ? ex.InnerException.ToString() : ex.Message;
}
return importGasResultDto;
}
解决方案
推荐阅读
- android - SQLite 数据库:在 Android Studio 中的多个活动之间写入和读取数据
- python - 如何在不使用内置函数的情况下使用特定列按升序对列表进行排序?(Python)
- mysql - 仅返回与 IN 子句中指定的所有值匹配的行
- c# - 重载方法取决于调用实例
- node.js - 为什么我不能在 Rasspian OS 中运行相同的应用程序?
- javascript - JavaScript + JQUERY:基于两个输入变量计算
- python - 大多数pythonic检查列表的方法归结为一个值
- php - 'woocommerce_get_item_data' 未显示在收到的订单页面
- android - com.google.android.glass.media 包不存在
- typescript - Typescript React-native styled-component 中的类型问题