Ninject を使用して、リクエストごとに同じデータベース接続を使用しています。ルート内に別の Web アプリケーションである RosterProcess というルートがありますが、同じコード ベースを使用しているため、2 つの異なるアプリケーション プールを使用できます。このプロセス中にいくつかのスレッドをスローしているため、アプリケーション プールがスレッドの問題を引き起こしていると思います。InThreadScope は機能しますが、1 つだけを使用するのではなく、データベースで複数の接続を開きます。以下のエラーが表示されますが、その理由がわかりません。
Global.asax
kernel.Bind<IDatabaseFactory>().To<DatabaseFactory<MySqlConnection>>().InRequestScope().WithConstructorArgument("connectionString", Config.Data.MySQLConnection);
工場
public class DatabaseFactory<T> : Disposable, IDatabaseFactory where T : IDbConnection, new()
{
private readonly string _connectionString;
private IDbConnection _dataConnection;
public DatabaseFactory(string connectionString)
{
_connectionString = connectionString;
}
#region IDatabaseFactory Members
public IDbConnection Get()
{
return _dataConnection ?? (_dataConnection = new T { ConnectionString = _connectionString });
}
#endregion
protected override void DisposeCore()
{
if (_dataConnection != null)
_dataConnection.Dispose();
}
}
オブジェクト参照がオブジェクト インスタンスに設定されていません。MySql.Data.MySqlClient.MySqlDataReader.Close() で MySql.Data.MySqlClient.MySqlConnection.Close() で MySql.Data.MySqlClient.MySqlConnection.Dispose(ブール値の破棄) で System.ComponentModel.Component.Dispose() で CL .NatGeo.Dashboard.Data.Infrastructure.DatabaseFactory
1.DisposeCore() at CL.NatGeo.Dashboard.Data.Infrastructure.Disposable.Dispose() at Ninject.Activation.Strategies.DisposableStrategy.<Deactivate>b__0(IDisposable x) at Ninject.Activation.InstanceReference.IfInstanceIs[T](Action
1 アクション) at Ninject.Activation.Strategies.DisposableStrategy.Deactivate(IContext コンテキスト、InstanceReference 参照) at Ninject.Activation.Pipeline.<>c_ DisplayClass6.b _4(IActivationStrategy s) at Ninject .Infrastructure.Language.ExtensionsForIEnumerableOfT.Map[T](IEnumerable1 series, Action
1 アクション) at Ninject.Activation.Pipeline.Deactivate(IContext コンテキスト、InstanceReference 参照) at Ninject.Activation.Caching.Cache.Forget(CacheEntry エントリ) at Ninject.Activation.Caching.Cache.Forget(IEnumerable1 cacheEntries) at Ninject.Activation.Caching.Cache.Clear(Object scope) at Ninject.OnePerRequestModule.<>c__DisplayClass5.<DeactivateInstancesForCurrentHttpRequest>b__3(ICache cache) at Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map[T](IEnumerable
1 シリーズ、Action`1アクション) で Ninject.OnePerRequestModule.DeactivateInstancesForCurrentHttpRequest() で Ninject.OnePerRequestModule.b__0(Object o, EventArgs e) で System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() で System.Web.HttpApplication. ExecuteStep(IExecutionStep ステップ、ブール値 & 完了した同期)