ASP.NET应用程序池回收问题

标签 asp.net wcf application-pool recycle

我有一个 Web 项目设置,其中包含 WebForms 和 WCF 服务。我遇到一个问题,我的应用程序似乎经常回收,并且丢失所有单例对象和 session 值。这似乎不是超时问题,但可能是某种内存泄漏。我们可以使用该应用程序一分钟左右,然后它就失去了一切。

我尝试监视目录的更改,但发现文件系统根本没有更改。我还在 Application_Error 中放置了一个断点,并且没有抛出任何错误。

我已经用谷歌搜索了两天试图解决这个问题。该应用程序是之前运行良好的项目的直接复制。我注意到不同的一件事是我的上一个项目使用 nHibernate 作为后端,而这个项目我改用 Linq to SQL。我注意到我没有正确处理 DataContext,因为我在服务调用中调暗了 DataContext 的实例,并在将上下文设置为空之前返回一个值,所以我认为它可能不会关闭。我尝试不将数据上下文存储在“存储库”类中,而是将其存储在操作上下文中,并显式将其放置在 Application_EndRequest 上。这仍然没有解决问题。

有人有什么建议或我应该看的地方吗?

**更新**:我相信我找到了我的问题。我有使用 EntitySet 的对象,并且我使用可序列化的 IList 属性和返回列表的 linq 查询直接序列化这些对象。当我尝试在返回数据之前显式处理我的数据上下文时,我在序列化这些 EntitySet 时遇到了问题,因为数据上下文不再处于事件状态。我将尝试使用常规列表而不是实体集将数据复制到新的空白对象中,看看这是否允许我正确关闭我的数据上下文并解决我的问题。

最佳答案

更新确实是一个不同的问题,但你真的不应该尝试序列化来自 ORM 的东西——很多潜在的噩梦。为自己构建一些 DTO。

关于ASP.NET应用程序池回收问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5942618/

相关文章:

c# - 在 ASP.NET 中显示谁在线

web-services - 404 在现有的 .svc 文件上

c# - 使用 C# 和 IIS7 创建一个新的应用程序池并将其分配给远程主机上的站点子文件夹

c# - 将 Plupload 与 ASP.NET/C# 结合使用

asp.net - 火狐。如何使边框颜色与文本颜色不同?

asp.net - 第一个下拉列表项选择的 View 状态问题

c# - 服务器返回 HTTP 401 时如何获取 WCF FaultException?

c# - 使用 WCF 的 DDD 项目结构

iis-6 - 更改 IIS 6 应用程序池而不影响整个服务器上的应用程序池

c# - 使用 Windows 身份验证的 ASP.Net Core 3.1 中的空闲超时