ASP.NET Core 2.0无法返回EF触摸的对象

时间:2017-10-18 15:09:36

标签: c# asp.net-core-2.0 ef-core-2.0

我有以下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()中的返回对象,则无法返回。邮递员报告未收到任何回复。如果我输入任何其他对象,它返回对象就好了。我似乎无法找到障碍,因为我没有任何例外或任何事情,只是未能返回。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

也许尝试使用非异步版本进行测试,看看它是否会回复错误?