Memory leaks Autofac Nhibernate内存泄漏

Memory leaks Autofac Nhibernate内存泄漏,memory-leaks,fluent-nhibernate,autofac,Memory Leaks,Fluent Nhibernate,Autofac,我们有使用autofac和FluentNhibernate的WCF服务。问题是它会导致内存泄漏。每隔2-3小时,我们的应用程序就会变得非常慢,我们必须重新启动应用程序池 以下是应用程序_start中的代码,用于在Global.asax文件中自动注册组件 我能做些什么来解决这个问题?或者从哪里开始寻找 var builder = new ContainerBuilder(); builder.RegisterAssemblyTypes(typeof(IPwoSummaryCategoryServ

我们有使用autofac和FluentNhibernate的WCF服务。问题是它会导致内存泄漏。每隔2-3小时,我们的应用程序就会变得非常慢,我们必须重新启动应用程序池

以下是应用程序_start中的代码,用于在Global.asax文件中自动注册组件

我能做些什么来解决这个问题?或者从哪里开始寻找

var builder = new ContainerBuilder();

builder.RegisterAssemblyTypes(typeof(IPwoSummaryCategoryService).Assembly).AsImplementedInterfaces();

builder.RegisterType<TemplateServiceCollection>().As<ITemplateServiceCollection>();

// Register Singletons
builder.RegisterType<QueryFacade>().As<IQueryFacade>().SingleInstance();
builder.RegisterType<CommandAggregator>().As<ICommandAggregator>().SingleInstance();

// Register open generics    builder.RegisterAssemblyTypes(typeof(ICommandHandler<>).Assembly).AsClosedTypesOf(typeof(ICommandHandler<>));
builder.RegisterInstance<MessageBrokerClient>(new MessageBrokerClient(Activator.CreateInstance<CustomMessageFormatter>(), AppConfiguration.MSMQRequestQueueUri, AppConfiguration.MSMQUser, false))
    .As<IMessageBrokerClient>().SingleInstance();
builder.RegisterInstance<Logger>(new Logger(HostingEnvironment.ApplicationPhysicalPath)).As<ILogger>();
builder.RegisterType<QuotesUnlockedByAdmin>().As<IQuotesUnlockedByAdmin>().SingleInstance();

// Register the Seed Data Builder
builder.RegisterType<SeedDataBuilder>();

// Register WCF Web Services
builder.RegisterType<QueryService>();
builder.RegisterType<CommandService>();
builder.RegisterType<MasterDataService>();
builder.RegisterType<AuthenticationService>();
builder.RegisterType<UserProfileService>();

//builder.RegisterType<OfflineSyncService>();
builder.RegisterType<ExternalDataQueryService>();
builder.RegisterType<DataContextProvider>().As<IDataContextProvider>().SingleInstance();

builder.RegisterAssemblyTypes(typeof(IDataContext).Assembly,typeof(DataContext).Assembly).AsImplementedInterfaces();

// Create a single Session Activator (manages multiple Session Factories) per AppDomain
builder.Register(context => SessionActivator.Build.FromConfiguration(new Configuration())).As<ISessionActivator>().SingleInstance();
builder.RegisterType<DataContextProxy>();

// Custom Registration for the CurrencyConverter
builder.Register(context => new CurrencyConverter(context.Resolve<IMasterQueryFacade>().GetCurrencies())).As<ICurrencyConverter>().SingleInstance();
var container = builder.Build();
AutofacHostFactory.Container = container;
ServiceLocator.SetLocatorProvider(() => new AutofacContrib.CommonServiceLocator.AutofacServiceLocator(container));

// Pre-populate the database with seed data (if missing)
container.Resolve<SeedDataBuilder>().InitializeSeedData();
var builder=newcontainerbuilder();
RegisterAssemblyTypes(typeof(IPwoSummaryCategoryService.Assembly).AsImplementedInterfaces();
builder.RegisterType().As();
//登记单身人士
builder.RegisterType().As().SingleInstance();
builder.RegisterType().As().SingleInstance();
//注册open generics builder.RegisterAssemblyTypes(typeof(ICommandHandler).Assembly.AsClosedTypesOf(typeof(ICommandHandler));
RegisterInstance(新MessageBrokerClient(Activator.CreateInstance(),AppConfiguration.MSMQRequestQueueUri,AppConfiguration.MSMQUser,false))
.As().SingleInstance();
RegisterInstance(新记录器(HostingEnvironment.ApplicationPhysicalPath)).As();
builder.RegisterType().As().SingleInstance();
//注册种子数据生成器
RegisterType();
//注册WCF Web服务
RegisterType();
RegisterType();
RegisterType();
RegisterType();
RegisterType();
//RegisterType();
RegisterType();
builder.RegisterType().As().SingleInstance();
RegisterAssemblyTypes(typeof(IDataContext).Assembly,typeof(DataContext.Assembly).AsImplementedInterfaces();
//为每个AppDomain创建一个会话激活器(管理多个会话工厂)
builder.Register(context=>SessionActivator.Build.FromConfiguration(new Configuration()).As().SingleInstance();
RegisterType();
//CurrencyConverter的自定义注册
Register(context=>newcurrencyConverter(context.Resolve().GetCurrencies()).As().SingleInstance();
var container=builder.Build();
AutofacHostFactory.Container=容器;
ServiceLocator.SetLocatorProvider(()=>新的AutofacContrib.CommonServiceLocator.AutofacServiceLocator(容器));
//使用种子数据预填充数据库(如果缺少)
container.Resolve().initializeData();
请阅读-总结是,这不是向志愿者讲话的理想方式,可能会对获得答案产生反作用。请不要将此添加到您的问题中。请阅读-总结是,这不是解决志愿者问题的理想方式,可能会对获得答案产生反作用。请不要将此添加到您的问题中。