c# - 我的对象在哪里被处置?

标签 c# .net sharepoint

我有一个奇怪的问题:我在 .aspx 页面中使用 SPContext.Current.Web,但最后,我收到“尝试使用已关闭或处置且不再有效的 SPWeb 对象。 “错误信息。

据我所知,SPContext.Current.Web 已被某人处置,但我不知道在何处。我只是想知道:使用 Visual Studio 2005 的调试器,我能否以某种方式查看对象在哪里/由谁处理?由于我既不创建也没有源代码,因此设置断点是一个问题。

如果不随机注释行,找出谁将给定对象放置在何处的好方法是什么?

(注意:问题已解决,但问题本身也适用于 Sharepoint 之外)

最佳答案

检查这是否有帮助:

  1. 使用调试 > 新断点 > 在函数处中断... (Ctrl+B) 添加新断点。
  2. 在函数编辑框中输入 Microsoft.SharePoint.SPWeb.Dispose
  3. 关闭提示 Intellisense 找不到指定位置的对话框。
  4. 在调试器下运行。
  5. 当遇到断点时,您可以在调用堆栈上看到谁调用了 Dispose 方法。希望在某些情况下,断点被命中时,您的源代码中有一个堆栈帧。

如果在命中断点时出现一个对话框说当前位置没有可用的源代码,请将其关闭。


注意:因为我没有安装 SharePoint,所以我已经使用 System.IO.StreamReader.Dispose 对此进行了测试,但我猜测这也适用于 SPContext。 Current.Web.对此发表评论。

关于c# - 我的对象在哪里被处置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/201501/

相关文章:

c# - EF Code First Migrations 创建额外的外键

C#逻辑运算题

c# - 如何将通用参数传递给局部 View

c# - 在单元测试中,如果结果是 Guid,如何断言?

Sharepoint 计时器作业 - 作业在哪个服务器上执行?

c# - 警告 : Page Has Expired

.net - 我应该将服务属性应用于接口(interface)、具体类还是两者?

.net - 启动 exec 时无法加载程序集或文件

sharepoint - 如何在 SharePoint 2010 中编辑列表模板?

c# - .NET 引用(未找到方法)