来自HRESULT的异常:0x80020009(DISP_E_EXCEPTION))在SharePoint中

时间:2010-04-12 05:44:21

标签: sharepoint sharepoint-2007

谷歌搜索了上述Sharepoint例外的解决方案已经过了好几个小时之后,我已经来到SO寻求帮助......

我相信我得到上述异常的原因是因为以下代码:

try
{
    using (SPSite site = new SPSite(siteId, spUserToken))
    {
        using (SPWeb web = site.OpenWeb(webId))
        {
            createNewSite(web);
        }
    }
}

createNewSite(web)使用AllowUnsafeUpdates更改“web”的名称和URL,因此当它出来时,它已被更改。我几个月的Sharepoint开发经验表明,这是异常的原因。 “web”已不再使用,所以我可以自己轻松地取消它。这里的问题是......它没有用:

try
{
    using (SPSite site = new SPSite(siteId, spUserToken))
    {
        SPWeb web = null;
        using (web = site.OpenWeb(webId))
        {
            createNewSite(web);
            if (web != null)
            {
                web = null;
            }
        }
    }
}

我相信原始开发人员使用using声明来避免SPWeb对象泄漏。除此之外,我认为我可以打破这种模式,仅仅是为了摆脱那种可怕的例外。

所以问题是:我可以对上面的代码做些什么来潜在地修复这个异常?

感谢。

1 个答案:

答案 0 :(得分:1)

使用名为createNewSite的方法更改现有网站是一个不好的标志 - 您也应该为此发布代码。

然而,没有必要将web设置为null - 它没有任何效果,因为它无论如何都要超出范围。

更可能的原因是您调用的自定义方法有问题或者使用的ID的有效性存在问题。