gpt4 book ai didi

asp.net-mvc - Linq to SQL DataContext Windsor IoC内存泄漏问题

转载 作者:行者123 更新时间:2023-12-01 16:43:26 24 4
gpt4 key购买 nike

我有一个 ASP.NET MVC 应用程序,它使用 CaSTLer Windsor IoC 根据每个 Web 请求创建 Linq2SQL 数据上下文。

出于某种我不完全理解的原因,每次创建新的数据上下文(在每个​​ Web 请求上)时,都会占用大约 8k 内存并且不会释放 - 这不可避免地会导致 OutOfMemory 异常。

如果我强制垃圾回收,内存就会被释放。

我的数据上下文类非常简单:

 public class DataContextAccessor : IDataContextAccessor
{
private readonly DataContext dataContext;
public DataContextAccessor(string connectionString)
{
dataContext = new DataContext(connectionString);
}
public DataContext DataContext { get { return dataContext; } }
}

用于实例化的 Windsor IoC webconfig 看起来像这样:

 <component id="DataContextAccessor"
service="DomainModel.Repositories.IDataContextAccessor, DomainModel"
type="DomainModel.Repositories.DataContextAccessor, DomainModel"
lifestyle="PerWebRequest">
<parameters>
<connectionString>
...
</connectionString>
</parameters>
</component>

有谁知道问题是什么以及如何解决它?

最佳答案

L2S DataContext 实现 IDisposable。您的接口(interface)还必须实现它,并调用 DataContext.Dispose(),以便 Windsor 知道有资源需要处置。

顺便提防 Windsor/IDisposable 问题: http://www.jeremyskinner.co.uk/2008/05/03/aspnet-mvc-controllers-windsor-and-idisposable/ http://www.nablasoft.com/Alkampfer/?p=105

关于asp.net-mvc - Linq to SQL DataContext Windsor IoC内存泄漏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1710992/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com