私は現在、現在のHttpContextを使用してLINQデータコンテキストを格納しているWebアプリケーションを持っています。コンテキストはRick Strahl's blogごと、ユーザーごとに、現在の要求のために保持されます:サーバーサイドのHttpContextに相当する?
string ocKey = "ocm_" + HttpContext.Current.GetHashCode().ToString("x")
Thread.CurrentContext.ContextID.ToString();
if (!HttpContext.Current.Items.Contains(ocKey))
{
// Get new Data Context and store it in the HTTP Context
}
しかし、私はがのHttpContextを持っていないことを、Global.asaxファイルから実行するいくつかのスクリプトを持っています。 HttpContext.CurrentはNULLであり、サーバーは "要求"を出しているため、です。
データコンテキストの保存に使用できるオブジェクトはありますか?だから私はそれを再作成したり、オブジェクトを取り付けたり外したりすることについて心配する必要はありませんか?私は、自分のプロセスの生涯にわたってコンテキストを維持したいだけです。
更新:私は現在、私のDALヘルパークラスに静的変数を使用しようとしています
。クラス内のメソッドの1つへの最初の呼び出しで、DataContextがインスタンス化され、静的変数に格納されます。私のプロセスの終わりに、DataContextでDisposeを呼び出す別のメソッドを呼び出し、静的変数をNULLに設定します。
スクリプトはどのイベントで実行されますか?私はSession_StartとEndを想定していますか? – JoshBerke
定期的に実行するために作成されたタイマーがあります。これらはApplication_Startイベント中に作成されます。彼らは毎回頻繁に実行され、データベースをチェックしていくつかの電子メールを発します。 –
明確にしてください - 現在のコンテキストを返すメソッドがあります(存在しない場合は新しいものを作成しています)。また、この同じメソッドは、HttpContextを使用可能にした場合と使用しない場合(タイマーコールバックで)の両方で動作します。右? – XOR