开发者

Why 'timeout expired' exception thrown with StructureMap?

开发者 https://www.devze.com 2022-12-23 04:02 出处:网络
I\'m getting a the following exception: \"Timeout Expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled conections were in use

I'm getting a the following exception:

"Timeout Expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled conections were in use and max pool size was reached."

...from a relatively heavily trafficked ASP.NET MVC 2 site I developed using StructureMap and Fluent NHibernate.

I think that perhaps the connections aren't being disposed properly. What do you think may be causing this? Could it be my use of InstanceScope.Hybrid?

Here's my NHibernateRegistry class; thanks in advance for your help:

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 Structu开发者_如何学JAVAreMap.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>();
        }
    }
}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号