2017-06-02 24 views
1

.Net Coreの新しいプロジェクトがあります。これはWebAPIプロジェクトです。そして私のモデルには別のプロジェクトがあります。私はhttp://localhost:55555/api/questios/を呼び出すとき.Net Core WebAPI接続がリセットされ、コントローラに「インクルード」が含まれている場合

// GET: api/questions 
    [HttpGet] 
    public IEnumerable<Question> GetQuestions() 
    { 
     return _context.Questions 
      .Include(i => i.QuestionType); 
    } 

それだけで最初のレコードを返し、その後、このエラーメッセージ: のrecv失敗:WebAPIのプロジェクトで

は、コントローラに、私はこのような何かを持っている接続が

をリセットしました

Includeの部分を削除して_context.Questionsを返すだけで正常に機能します。

私のコードで何が間違っていますか?

+2

LazyLoadingは有効になっていますか?理由を理解するために、リストオブジェクトにエンティティを単にフラット化することができます。 – ali

+0

これをデバッグするには、try/catchでリターンをラップして、.ToList()を.Includeの後に追加します。 – robjam

+0

コントローラにコンテキストを挿入するにはどうすればよいですか? DIサービスで? – AdrienTorris

答えて

2

私は答えを見つけました。助けてくれた皆さん、ありがとう。

私はあなたがASP.NETコアを使用している場合、あなたはそれがオブジェクトグラフ内で検出サイクルを無視するJson.NETを設定することができLoading related data

によるJSONのオプションを追加しました。これはStartup.csのConfigureServices(...)メソッドで行われます。

  services.AddMvc() 
       .AddJsonOptions(
        options => options.SerializerSettings.ReferenceLoopHandling 
         = Newtonsoft.Json.ReferenceLoopHandling.Ignore); 
0

これを試してみてください:

// GET: api/questions 
[HttpGet] 
public IEnumerable<Question> GetQuestions() 
{ 
    var res = _context.Questions 
     .Include(i => i.QuestionType).ToArray(); 
    return res; 
} 
+0

これは以前と同じです。 – Rahmani

+0

他の関連するエンティティを含めることができますか?または、あなたが含むすべてのものについて同じエラーが出ますか? –

+0

私はコードを更新しました。 Tryと "res"変数を見るためにブレークポイントでこれをデバッグします。 –

関連する問題