Я получаю следующее исключение:
"Время ожидания истекло. Время ожидания истекло до получения соединения из пула. Это могло произойти, потому что все пулы использовались и максимальный размер пулабыл достигнут ".
... с сайта ASP.NET MVC 2 с относительно интенсивным трафиком, который я разработал с использованием StructureMap и Fluent NHibernate.
Я думаю, что, возможно, соединения расположены неправильно.Как вы думаете, что может быть причиной этого?Могу ли я использовать InstanceScope.Hybrid?
Вот мой класс NHibernateRegistry;заранее спасибо за помощь:
using MyProject.Core.Persistence.Impl;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using NHibernate.ByteCode.LinFu;
using NHibernate.Cfg;
using MyProject.Core.FluentMapping;
using StructureMap.Attributes;
using StructureMap.Configuration.DSL;
namespace MyProject.Core.Persistence
{
public class NHibernateRegistry : Registry
{
public NHibernateRegistry()
{
FluentConfiguration cfg = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005.ConnectionString(
x =>
x.FromConnectionStringWithKey(
"MyConnectionString"))
.ProxyFactoryFactory(typeof (ProxyFactoryFactory).AssemblyQualifiedName))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<EntryMap>());
Configuration configuration = cfg.BuildConfiguration();
ISessionFactory sessionFactory = cfg.BuildSessionFactory();
ForRequestedType<Configuration>().AsSingletons()
.TheDefault.IsThis(configuration);
ForRequestedType<ISessionFactory>().AsSingletons()
.TheDefault.IsThis(sessionFactory);
ForRequestedType<ISession>().CacheBy(InstanceScope.Hybrid)
.TheDefault.Is.ConstructedBy(ctx => ctx.GetInstance<ISessionFactory>().OpenSession());
ForRequestedType<IUnitOfWork>().CacheBy(InstanceScope.Hybrid)
.TheDefaultIsConcreteType<UnitOfWork>();
ForRequestedType<IDatabaseBuilder>().TheDefaultIsConcreteType<DatabaseBuilder>();
}
}
}