Ich habe eine Webanwendung mithilfe von Asp.NET-Webform, NHibernate für den Zugriff auf Sql Server 2008-Datenbank und StructureMap als IOC-Container erstellt.NHibernate StructureMap ASP.NET-Webformular System.OutOfMemoryException
Alles scheint gut zu funktionieren, da nur wenige Benutzer es verwenden;
System.OutOfMemoryException
Ich heruntergeladen redgate Ameisen Suite: wenn Benutzer Zahl steigt Webapp Abstürze mit diesem Fehler (wir 10+ Nutzer sagen kann) die Performance-Tool sagt, dass die maximale CPU-Zeit für eine GetAll in NHibernate createSessionFactory ist anfordern.
Das ist mein NHibernateHelper Objekt:
public static NHibernate.ISessionFactory _sessionFactory;
public static NHibernate.ISessionFactory createSessionFactory()
{
try
{
if (_sessionFactory == null)
{
return
FluentNHibernate.Cfg.Fluently.Configure()
.Database
(
FluentNHibernate
.Cfg.Db.MsSqlConfiguration.MsSql2008
.ConnectionString
(
c => c
.Server(ConfigurationManager.DbConnectionValue.Server)
.Username(ConfigurationManager.DbConnectionValue.User)
.Password(ConfigurationManager.DbConnectionValue.Password)
.Database(ConfigurationManager.DbConnectionValue.Database)
)
.ProxyFactoryFactory("NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu")
)
.Mappings
(
m => m.FluentMappings.AddFromAssemblyOf<Repository.IRepositoryBlocco>()
)
.BuildSessionFactory();
}
else
return _sessionFactory;
}
catch (Exception ex)
{
throw ex;
}
}
Dies ist die Art, wie ich Daten von db lesen:
public IList<DomainModel.Model.Variabile> GetAll()
{
try
{
var session_factory = NHibernateHelper.createSessionFactory();
using (var session = session_factory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
var query = session.Linq<DomainModel.Model.Variabile>()
.OrderBy(v => v.ordine);
return query.ToList();
}
}
}
catch (Exception ex)
{
throw ex;
}
}
Bin ich keine Fehler gemacht? Könnte es die sein, die OutOfMemoryException provoziert? Mit freundlichen Grüßen
Sie weisen _sessionFactory-Variable niemals der soeben erstellten Factory zu, so dass sie jedes Mal eine neue Session-Factory erstellt, wenn –
funktioniert! Thx viel – frabiacca