2017-10-18 3 views
1

私は、基本的にはマルチパートポスト(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); 
    }   

は何がそれが必要ありませんが、[OK]をで戻りオブジェクトは()いくつかのポイント(そう具体的には、FILEDATAと連絡先データ)でEFによってタッチされたかどう返すことができません。郵便配達員は応答を受け取ったと報告しない他のオブジェクトを入力した場合は、オブジェクトを正常に返します。例外なく何かを得ることができないので、私はヒッチを見つけられないように見えます。どんな助けでも大歓迎です。

答えて

0

エラーを返すかどうかを確認するために非同期バージョンでテストしてみてください。

+0

私はこの質問を書いて以来、このプロジェクトのこの部分は正式に廃止されました。これは、最近私が自分の時間に問題に戻らなければならないことを意味しますが、最近あなたの提案をお試しいただきありがとうございます。 – JasonX

関連する問題