2017-02-16 15 views
1

500エラーを発生させます。CreateAtRoute私はASPNETコアMVCを習得しようとしていますし、私はこのテーマに非常に緑の午前

私は自分の理解をテストするために、単純なDI注入でentityframeworkコアを使用して、非常に単純なWEBAPIを作成しました。 DIインジェクション部のエンティティフレームワークはうまく機能し、レコードはデータベースに正しく書き込まれています。しかし、POSTを使って郵便配達員からレコードを追加するたびに、私のレコードがデータベースに追加されましたが、郵便配達員には500のエラーがありました。エラーが発生した場所を特定できませんが、CreateAtRouteでエラーが発生する可能性があります。以下は

enter image description here

私は完全を期すためにそれを含め、私のプロジェクトの構造です。

enter image description here

レコードがデータベースに正しく追加しまったので、エンティティフレームワークとDI注入部分は問題ないはずです。これは私が郵便配達

http://localhost:7575/api/receipt 

、これは私が追加されたレコードだったに入れコマンドです: enter image description here

送る打った後、POSTMANがエラー500を生成:

enter image description here 私のコントローラコードが取り付けられています。以下:

namespace TestReceipt2.Controllers 
{ 
    [Route("api/[controller]")] 
    public class ReceiptController : Controller 
    { 
     private readonly IReceiptRepository _receiptRepository; 

     public ReceiptController(IReceiptRepository receiptRepository) 
     { 
      _receiptRepository = receiptRepository; 
     } 

     public IActionResult Index() 
     { 
      return View(_receiptRepository.GetAll()); 
     } 
     // GET: api/values 
     [HttpGet] 
     [ResponseCache(Duration =60, Location =ResponseCacheLocation.Client)] 
     public IEnumerable<Receipt> GetAll() 
     { 
      return _receiptRepository.GetAll(); 
     } 

     // GET api/values/5 
     [HttpGet("{id}",Name ="GetReceipt")] 
     public IActionResult Get(string id) 
     { 
      var Item = _receiptRepository.Find(id); 
      if (Item==null) 
      { 
       return NotFound(); 
      } 
      return new ObjectResult(Item); 
     } 

     // POST api/values 
     [HttpPost] 
     public IActionResult Post([FromBody]Receipt value) 
     { 
      if (value==null) 
      { 
       return BadRequest(); 
      } 
      TryValidateModel(value); 
      if (this.ModelState.IsValid) 
      { 
       try 
       { 
        _receiptRepository.Add(value); 
       } 
       catch (System.Exception) 
       { 
        throw; 
       } 
      } 
      else 
      { 
       return BadRequest(); 
      } 
      return CreatedAtRoute("GetReceipt", new { controller = "Receipt", id = value.ID }); 
     } 

     // PUT api/values/5 
     [HttpPut("{id}")] 
     public IActionResult Put(string id, [FromBody]Receipt value) 
     { 
      var receipt = _receiptRepository.Find(id); 
      _receiptRepository.Update(value); 
      return new NoContentResult(); 
     } 

     // DELETE api/values/5 
     [HttpDelete("{id}")] 
     public void Delete(string id) 
     { 
      _receiptRepository.Remove(id); 
     } 
    } 
} 

上記のように、私は非常に新しいですすべて多分これらのASPNETコアMVCのもの、エラー私の経験不足によって引き起こされるか、明らかに些細な何か...またはエラーではないかもしれませんか?私はこの謎をいただければ幸いです明らかにする手助けするために、任意のポインタをポストマンを訴えてた理由を私は知らないし、私はそれが参照された内部エラーを見つける方法がわからない...

答えて

0

あなたはCreatedAtRouteの間違ったオーバーロードを使用しています。代わりに3つの引数をとるオーバーロードを使用してください。

A very similar answer

関連する問題

 関連する問題