2017-10-18 114 views
1

我有以下post函数,它基本上只需要一个多部分文章(fileDataModel.File是一个IFormFile对象),并将文件元数据保存到数据库,并将文件保存到硬盘驾驶。ASP.NET Core 2.0无法返回EF触摸的对象

[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和联络资料)被触及。邮递员没有收到回复。如果我输入任何其他对象,它会返回对象就好。我似乎无法找到任何障碍,因为我没有任何例外或任何事情,只是无法返回。任何帮助将不胜感激。

回答

0

也许尝试测试它与一个非异步版本只是为了看看它是否回馈错误?

+0

自从我写这个问题以来,这部分项目已被正式废弃。这意味着我不得不在我自己的时间回到这个问题上,这个问题最近很少,但是谢谢你,我会尝试你的建议。 – JasonX