次の 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 を使用する受け入れ可能な方法ですか、それとも、知っておくべき特定の欠点または隠れた問題がありますか?