C# ASP.NET Core 2.0无法返回对象

C# ASP.NET Core 2.0无法返回对象,c#,asp.net-core-2.0,ef-core-2.0,C#,Asp.net Core 2.0,Ef Core 2.0,我有下面的post函数,它基本上只接受一个多部分post(fileDataModel.File是一个IFormFile对象),并将文件元数据保存到数据库,将文件保存到硬盘 [HttpPost("filedata")] public async Task<IActionResult> PostFileData([FromForm] FileDataBindingModel fileDataModel) { if (!ModelState.IsVa

我有下面的post函数,它基本上只接受一个多部分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);
    }        
[HttpPost(“文件数据”)]
公共异步任务PostFileData([FromForm]FileDataBindingModel fileDataModel)
{
如果(!ModelState.IsValid)
{
返回请求(ModelState);
}           
var contactData=wait_context.contactData.FirstOrDefaultAsync(e=>e.Id==fileDataModel.ContactId);
如果(contactData==null)
{
AddModelError(“ContactId”,“不存在此类联系人”);
返回请求(ModelState);
}
FileData FileData=新文件数据
{
ContactId=fileDataModel.ContactId,
联系人=联系人数据
};
var fileName=fileDataModel.File.fileName;
var FileStorageDir=Path.Combine(AppDomain.CurrentDomain.BaseDirectory,“filestorage”);
CreateDirectory(FileStorageDir);
var FileStoragePath=FileStorageDir+“\\”+DateTimeOffset.UtcNow.ToUnixTimeSeconds()+文件名;
使用(FileStream fStream=newfilestream(FileStoragePath,FileMode.OpenOrCreate)){
等待fileDataModel.File.CopyToAsync(fStream);
}
fileData.FilePath=FileStoragePath;
fileData.OriginalFileName=文件名;
fileData.Id=Guid.NewGuid();
_context.FileData.Add(FileData);
wait_context.SaveChangesAsync();
返回Ok(文件数据);
}        

现在,这个函数工作正常,做了它应该做的事情,但是如果Ok()中的返回对象在某个点被EF触摸(具体地说是fileData和contactData),它就无法返回。邮递员报告没有收到回复。如果我输入任何其他对象,它会很好地返回该对象。我似乎找不到问题的症结所在,因为我没有得到任何例外或任何东西,只是未能返回。任何帮助都将不胜感激。

或许可以尝试使用非异步版本测试它,看看它是否会返回错误?

或许可以尝试使用非异步版本测试它,看看它是否会返回错误?

自从我写了这个问题以来,项目的这一部分已经正式废弃。这意味着我将不得不在自己的时间内回到这个问题上来,这一点最近很少见,但谢谢你,我会尝试你的建议。自从我写了这个问题以来,这个项目的这一部分已经正式取消了。这意味着我将不得不在自己的时间里回到这个问题上来,这一点最近很少见,但谢谢你,我将尝试你的建议。