現在HttpContext.Current.Items
、サーバー環境で開発者のローカル環境が問題を示さない (すべて期待どおりに動作する) の使用に問題が見られます。内部に配置されたアイテムが突然失われます ( NullReferenceException
.
私はいくつかのコードをスケッチし、以下を使用します:
Global.asax では、BeginRequest でファクトリを初期化します。
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Items["Key"] = new Factory();
}
内部にBaseControl
は、ファクトリを簡単に取得するためのプロパティがあります。
public Factory Factory
{
get { return HttpContext.Current.Items["Key"] as Factory; }
}
ではUserControl
、 base プロパティを介して使用します。
protected void Page_Load(object sender, EventArgs e)
{
Product p = Factory.CreateProduct();
}
環境情報:
- ローカル DEV は、IIS 7.5 および 8 と Sitecore 6.6 を使用して Windows 7 および 8 で実行されています。
- サーバーは、IIS 7.5 および Sitecore 6.6 を使用して Windows Server 2008 R2 を実行しています。
すべてのローカル DEV (6 人でこのプロジェクトに取り組んでいます) については、上記のコードに問題はありません。ただし、コードをテスト サーバーにデプロイすると、Factory を使用する場所が壊れます (HttpContext.Current.Items
空です) 。