我有以下post函数,它基本上只需要一个多部分的帖子(fileDataModel.File是一个IFormFile对象)并将文件元数据保存到数据库并将文件保存到硬盘驱动器。
[HttpPost("filedata")]
public async Task<IActionResult> PostFileData([FromForm] FileDataBindingModel fileDataModel)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var contactData = await _context.ContactData.FirstOrDefaultAsync(e => e.Id == fileDataModel.ContactId);
if (contactData == null)
{
ModelState.AddModelError("ContactId", "No such contact exists.");
return BadRequest(ModelState);
}
FileData fileData = new FileData
{
ContactId = fileDataModel.ContactId,
Contact = contactData
};
var fileName = fileDataModel.File.FileName;
var FileStorageDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "filestorage");
Directory.CreateDirectory(FileStorageDir);
var FileStoragePath = FileStorageDir + "\\" + DateTimeOffset.UtcNow.ToUnixTimeSeconds() + fileName;
using (FileStream fStream = new FileStream(FileStoragePath, FileMode.OpenOrCreate)) {
await fileDataModel.File.CopyToAsync(fStream);
}
fileData.FilePath = FileStoragePath;
fileData.OriginalFileName = fileName;
fileData.Id = Guid.NewGuid();
_context.FileData.Add(fileData);
await _context.SaveChangesAsync();
return Ok(fileData);
}
现在这个函数运行正常,它应该做什么,但是如果在某些时候EF(特别是fileData和contactData)触摸了Ok()中的返回对象,则无法返回。邮递员报告未收到任何回复。如果我输入任何其他对象,它返回对象就好了。我似乎无法找到障碍,因为我没有任何例外或任何事情,只是未能返回。任何帮助将不胜感激。
答案 0 :(得分:0)
也许尝试使用非异步版本进行测试,看看它是否会回复错误?