2

次の Controller-Method を使用して、ローカル開発サーバーからローカル IIS サーバー (ASP.NET MVC4) に切り替えるときに問題が発生しました。

  public JsonResult GetJsonData(string Context, string Language)  
    {
       using (KeyValueDBContext db = new KeyValueDBContext())
       {

            var entries = from u in db.KeyValues
                          where ((u.Context == Context) && (u.Language == Language))
                          select u;

            return Json(entries, JsonRequestBehavior.AllowGet);
      }

   }

ローカルサーバーを使用して、Javascript からメソッドを呼び出したときに問題なくデータを受信しました。このメソッドは、基本的にキーと値のペアのコレクションをデータベース リポジトリから取得し、クライアントに送信します)。IIS に切り替えた後、dbcontext が既に破棄されていることを示す例外が発生しました (ただし、using 句は return ステートメントの後に終了します)。(注: Visual Studio も何らかの理由で JSONSerializer.cs を見つけることができませんでしたが、エラーが発生した場合のみです)。次のバージョンに切り替えると、問題は完全に解決しました。

public JsonResult GetJsonData(string Context, string Language)   
    {
        KeyValueDBContext db = new KeyValueDBContext();
        var entries = from u in db.KeyValues
                     where ((u.Context == Context) && (u.Language == Language))
                     select u;

        return Json(entries, JsonRequestBehavior.AllowGet);
   }

どちらの場合も、これは using-block でした:

  using System;
  using System.Collections.Generic;
  using System.Data;
  using System.Data.Entity;
  using System.Linq;
  using System.Web;
  using System.Web.Mvc;
  using beepov4.Models; // project-models

私の質問: これは、JSON 呼び出し (および using 句の削除) の目的で dbcontext を使用する受け入れ可能な方法ですか、それとも、知っておくべき特定の欠点または隠れた問題がありますか?

4

1 に答える 1