- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很高兴继承了一个写得很糟糕的 SharePoint 项目。
显然,最初的开发人员是可重用代码的忠实粉丝(30% 的代码在 20 个项目中重用,而没有使用任何库——你猜怎么着?)。
我经常会发现他的代码调用一些 Common.OpenWeb
方法来检索 SPWeb
对象以操作 SharePoint 内容。这个函数的大多数化身看起来完全一样:
public SPWeb OpenWeb()
{
String strSiteUrl = ConfigurationManager.AppSettings["SiteUrl"].ToString();
SPSite site = null;
SPWeb web = null;
try
{
using (site = new SPSite(strSiteUrl))
{
using (web = site.OpenWeb())
{
return web;
}
}
}
catch (Exception ex)
{
LogEvent("Error occured in OpenWeb : " + ex.Message, EventLogEntryType.Error);
}
return web;
}
oWeb = objCommon.OpenWeb();
SPList list = oWeb.Lists["List name"];
SPListItem itemToAdd = list.Items.Add();
itemToAdd["Some field"] = "Some value";
oWeb.AllowUnsafeUpdates = true;
itemToAdd.Update();
oWeb.AllowUnsafeUpdates = false;
try-catch
。
Request
属性正在用于此。那怎么操作呢?
最佳答案
首先,简短的回答:该方法确实返回一个已处理的对象。对象被处理后不应使用,因为它不再处于可靠状态,并且对该对象执行的任何进一步操作(理论上)都应该抛出 ObjectDisposedException 。
现在,稍加挖掘后,SharePoint 对象似乎不遵循该规则。 SPWeb
不仅在被处理后从不抛出 ObjectDisposedException
,而且它实际上会在其 Request
属性中测试这种情况,并从其内部状态重建一个有效的 SPRequest
(如果它已被处理)。
似乎至少 SPWeb
被设计为即使在处置状态下也能完全发挥作用。为什么,我不知道。也许它是为了适应您正在处理的客户端代码。也许这是某种我无法理解的复杂优化。
也就是说,我建议您 不要依赖这种行为 ,因为它可能会在 future 发生变化(尽管考虑到微软关于 bug-for-bug 向后兼容性的政策,它可能不会)。
当然,您仍然会泄漏新的 SPRequest
实例,这可能会非常昂贵。永远不要使用已处理的对象,即使 SharePoint 允许您使用它。
关于sharepoint - 使用已处理的 SPSite 和 SPWeb 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4996829/
我见过 SPWeb 对象的三种类型的组属性 - Groups、SiteGroups、AssociatedGroups . 我知道 SiteGroups 将获取当前网站集中的所有组。但是 Groups
我很困惑 SPSite , SiteCollection , 和 SPWeb ? 所以我的理解是这个伪代码: http://My_server >>> TOP Level SIte or SPWEb
我想从代码中启动计时器作业需要农场管理员凭据。但是,我需要从将在任何站点中使用的 Web 部件启动计时器作业。现在,当我尝试开始工作时,它显然给了我一个拒绝访问错误,因为应用程序池标识不是场管理员。有
我希望有人可以帮助我。我需要从 SPContext 获取当前站点的根网站。使用以下方法很容易完成 SPContext.Current.Site.RootWeb 我对 SPContext.Current
我正在尝试编写一个控制台应用程序,它只列出共享点根目录中的列表数量。 我尝试使用以下代码执行此操作,但对象 SPContext.Current 为空。关于如何获取网络对象的任何想法? SPWeb w
我的 SharePoint 环境出现问题,我怀疑这段代码可能会导致内存泄漏。我将 SPWeb 对象作为按值 参数传递。 这段代码是否正确处理了 SPWeb 对象? public void Do
我正在研究要在 SharePoint 中使用的 WebPart,它将显示文档库中的文档列表。为此,我相信我需要引用承载 Web 部件的 SPWeb 对象。不幸的是,我没有看到如何从 WebPart 中
我们有几个包含许多 DAL 的项目。许多共享点列表,如反射(reflect)在 C# 类中的客户、销售、提供商。我们通过抽象母类让每个对象都实现 IDisposable。例如,每次我们实例化一个对象以
当我想访问网络时,我通常必须执行如下代码,这些代码是不言自明的。 using (SPSite site = new SPSite(siteUrl)) {
阅读后Stefan Gossner's post关于处置对象和这个关于 Cross method dispose patterns 的问题,我发现我不小心重新打开了一些SPWeb。我知道在 Stefa
在我的 PowerShell 脚本中,我想获取已用于创建 SPWeb 的 SPWebTemplate。在 SPWeb 实例中,可以访问属性 WebTemplate 和 WebTemplateId,但它
我有一个包含以下代码的 Web 部件: SPPermissionInfo info = site.RootWeb.GetUserEffectivePermissionInfo(SPContext.Cu
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我在 SharePoint 中有一个 Web 应用程序,该应用程序已扩展到另一个区域(外联网)。默认区域的访问 URL 为 http://server1,外网区域的 URL 为 https://www
我正在使用 sharpdevelop编写一个程序,将项目添加到 SharePoint 网站上的预先存在的列表中。 这是我的代码: using System.IO; us
所以我在 web 范围特征内 (properties.Feature.Parent = SPWeb)。 如何从此 SPWeb 获取 SPWebApplication? 我试过: SPWebApplic
我很高兴继承了一个写得很糟糕的 SharePoint 项目。 显然,最初的开发人员是可重用代码的忠实粉丝(30% 的代码在 20 个项目中重用,而没有使用任何库——你猜怎么着?)。 我经常会发现他的代
更新于 2009 年 6 月 8 日 15:52 : 简答 否 .原始问题: 我找不到任何提供有关 指导的引用资料SPWeb.Site 关于处置。我浏览了一些关于处置 SharePoint 对象的更流
如果我有以下 $webs = Get-SPWeb -Limit all -ErrorAction Stop foreach($web in $webs) { Write-Host $web.S
如果我有以下 $webs = Get-SPWeb -Limit all -ErrorAction Stop foreach($web in $webs) { Write-Host $web.S
我是一名优秀的程序员,十分优秀!