我正在使用ASP.Net Boilerplate v3.2.4 并且在使用HttpRequestBase
从Angularjs v1.7.5通过FileUploader将excel文件上传到MVC Controller时遇到了麻烦因此,当我尝试上传excel文件并且网站的 语言为阿拉伯语 时,抛出了异常,如下所示:
此日历不支持指定的时间。它应该介于 1900年4月30日00:00:00(以公历为准)和11077/16/23 23:59:59 (公历)(含)。参数名称:时间
AppServiceBase:
Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
Angulrjs代码:
appModule.controller('usersIndex', [ 'FileUploader', function (fileUploader) {
var vm = this;
vm.logoUploader = new fileUploader({
url: "User/UploadExcel",
headers: {
"X-XSRF-TOKEN": abp.security.antiForgery.getToken()
},
queueLimit: 1,
removeAfterUpload: true
});
uploader.onSuccessItem = function (item, ajaxResponse, status) {
if (ajaxResponse.success) {
abp.message.success("success");
} else {
abp.message.error("error");
}
};
vm.uploadLogo = function () {
vm.logoUploader.uploadAll();
};
}
控制器代码:
[HttpPost]
public async Task<JsonResult> UploadExcel()
{
if (Request.Files.Count <= 0 || Request.Files[0] == null)
{
throw new UserFriendlyException(L("File_Empty_Error"));
}
var file = Request.Files[0];
var usersList = new List<UserListDto>();
using (var package = new ExcelPackage(file.InputStream))
{
var currentSheet = package.Workbook.Worksheets;
var workSheet = currentSheet.First();
usersList.Add(new UserListDto()
{
UserName = workSheet.Cells[1, 1].Value.ToString(),
PhoneNumber = workSheet.Cells[1, 2].Value.ToString()
});
}
return Json(new AjaxResponse(usersList));
}
EXCEL的内容:
我尝试调试c#代码和javacript代码,但异常并非来自它们
感谢您的帮助
谢谢
---更新---
WORKAROUND:
我找到了解决方案, 我在上传之前使用Dto来存储数据。碰巧这个Dto包含日期,我没有直接使用它,但是它存在。
不幸的是,我没有找到解决文化问题的方法。