この例外を分析しようとしています。
メッセージ: エラー: オブジェクト参照がオブジェクトのインスタンスに設定されていません.. Z.Services.ObjectContextManagement.ScopedObjectContextManager 2.Manage()の System.Activator.CreateInstanceT で System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) で System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) を使用
1.get_ObjectContext() at Z.Services.DatabaseAccess.DatabaseAccess
します。 Services.DatabaseAccess.DatabaseAccess`2.get_ObjectContext()
基本的に、ObjectContext を取得するときにエラーが発生します。
この質問から: Entity Framework の遅延読み込みは他のスレッドからは機能しません。EFは同じスレッドにとどまることに依存していることがわかります。
この Jon Skeet のこの質問に対する回答から: IIS での要求は単一のスレッドで実行されますか? IIS にはスレッドの機敏性があることがわかります。
トラフィック量が少ない場合、このエラーは表示されませんが、負荷が増加するとエラーが表示されます。
質問: EF が 1 つのスレッドにとどまることに依存しており、IIS が要求を 1 つのスレッドに保持しない場合、IIS にデプロイされたアプリケーションで EF を使用できますか?
編集
var frameworkAssembly = Assembly.GetAssembly(typeof(ObjectContextManager<>));
var managerType = frameworkAssembly.GetType(managerTypeName + "`1", true, true);
managerType = managerType.MakeGenericType(typeof(TObjectContext));
ObjectContextManager = Activator.CreateInstance(managerType) as ObjectContextManager<TObjectContext>;
上記のコードの最後の行でエラーが発生しているようです。このエラーは、負荷が高い本番環境でのみ発生します。
編集 2
ObjectContextManager は、EF クラスである ObjectContext から継承します。
public abstract class ObjectContextManager<T> where T : ObjectContext