これは、要求とセッションのデータのファサードを使用して確実に行うことができます。ただし、リクエストやセッションを直接呼び出すのではなく、ページ内のすべてのコードを変更してファサードを使用する必要があります。
個別のスレッドを起動するときは、RequestおよびSessionについて必要なすべての情報を格納する新しい(カスタム)SessionDataオブジェクトを作成し、データベースまたはHttpRuntime.Cacheに格納します。そのオブジェクトの識別子をスレッドに渡すと、スレッドはどのSessionDataオブジェクトを使用するかを知ることができます。
あなたが特別ワーカースレッドにいる場合は、そのIDでSessionFacadeをインスタンス化できます。それ以外の場合は、パラメータなしでインスタンス化します。ここで
がうまくいけば十分にあなたが始めるのは、SessionFacadeの例です:私たちの特別な場合には
class SessionFacade
{
private string _threadID;
public SessionFacade() { }
public SessionFacade(string threadID)
{
this._threadID = threadID;
}
public object this[string key]
{
get
{
return this.GetData(key);
}
}
protected object GetData(string key)
{
if(!string.IsNullOrEmpty(this._threadID))
{
return ((SessionData)HttpRuntime.Cache[this._threadID])[key];
}
else
{
return Session[key];
}
}
}
は、なぜ、このWikiのでしょうか? –
は同じことを迷っていた –
私はそれをオフにすることはできますか? – Chris