各リクエストを更新するグローバル データ コンテキストがあります。
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentType = "application/json";
Response.Write(GetResponse());
Response.End();
}
public string GetResponse()
{
string fileName = this.Page.Request.PathInfo;
fileName = fileName.Remove(0, fileName.LastIndexOf("/") + 1);
DataContext.Renew();
MethodInfo method = this.GetType().GetMethod(fileName);
if (method == null)
throw new InvalidOperationException(
string.Format("Unknown method {0}.", fileName));
return (string)method.Invoke(this, new object[0]);
}
しかし、何らかの理由で、複数のリクエスト (複数の ajax 呼び出しなど) を取得すると、次のようなエラーが発生することがよくあります。
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at System.Data.Linq.DataContext.GetTable(MetaTable metaTable)
at System.Data.Linq.DataContext.GetTable[TEntity]()
at LibKezberProjectManager.KezberPMDBDataContext.get_Cases() in c:\Users\jlarouche\Documents\Visual Studio 2012\Projects\KezberProjectManager\LibKezberProjectManager\KezberPMDB.designer.cs:line 204
at LibKezberProjectManager.Data.Cases.GetAllScheduled() in c:\Users\jlarouche\Documents\Visual Studio 2012\Projects\KezberProjectManager\LibKezberProjectManager\Data.cs:line 113
at LibKezberProjectManager.Logic.ScheduleManager.GetScheduledCases() in c:\Users\jlarouche\Documents\Visual Studio 2012\Projects\KezberProjectManager\LibKezberProjectManager\Logic.cs:line 1035
at KezberProjectManager.CalendarServices.GetDates() in c:\Users\jlarouche\Documents\Visual Studio 2012\Projects\KezberProjectManager\KezberProjectManager\CalendarServices.aspx.cs:line 628
ただし、リクエストごとにコンテキストを更新しますが、そのリクエストにのみ使用されます。私は何か間違ったことをしていますか?
DataContext.Renew() は db = new KezDBContext(); を呼び出します。
そして、すべての呼び出しがこれを使用します。
すべてのアクセサ メソッドが静的であるという事実が問題になる可能性はありますか? 私はそうは思わないでしょう。
ありがとう