我有一个奇怪的问题:我在 .aspx 页面中使用 SPContext.Current.Web,但最后,我收到“尝试使用已关闭或处置且不再有效的 SPWeb 对象。 “错误信息。
据我所知,SPContext.Current.Web 已被某人处置,但我不知道在何处。我只是想知道:使用 Visual Studio 2005 的调试器,我能否以某种方式查看对象在哪里/由谁处理?由于我既不创建也没有源代码,因此设置断点是一个问题。
如果不随机注释行,找出谁将给定对象放置在何处的好方法是什么?
(注意:问题已解决,但问题本身也适用于 Sharepoint 之外)
最佳答案
检查这是否有帮助:
- 使用调试 > 新断点 > 在函数处中断... (Ctrl+B) 添加新断点。
- 在函数编辑框中输入 Microsoft.SharePoint.SPWeb.Dispose。
- 关闭提示 Intellisense 找不到指定位置的对话框。
- 在调试器下运行。
- 当遇到断点时,您可以在调用堆栈上看到谁调用了 Dispose 方法。希望在某些情况下,断点被命中时,您的源代码中有一个堆栈帧。
如果在命中断点时出现一个对话框说当前位置没有可用的源代码,请将其关闭。
注意:因为我没有安装 SharePoint,所以我已经使用 System.IO.StreamReader.Dispose
对此进行了测试,但我猜测这也适用于 SPContext。 Current.Web.对此发表评论。
关于c# - 我的对象在哪里被处置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/201501/