【问题标题】:SharePoint Unknown SPRequest error occurred. More information: 0x80070005发生 SharePoint 未知 SPRequest 错误。更多信息:0x80070005
【发布时间】:2010-02-24 13:29:57
【问题描述】:

哦,SharePoint...

我已经构建了一个自定义事件接收器,它只检查列表中的某些字段,并根据需要更改其中的一些。

仍然抛出这个异常:

发生未知的 SPRequest 错误。更多信息:0x80070005 错误:调用作业 ID {C67EFFCB-607A-4B6A-8C90-60F615FD1878}

失败

看到这可能是一个安全问题,并且在另一个 stackoverflow 主题中我看到它甚至可能是因为我使用了以下代码:

  SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                using (SPSite site = new SPSite(siteId))
                {
                    this.DisableEventFiring();
                  // Logic code.
                  // ...
                }
             });

但删除它需要重新编译和重新部署。认为最好先确定一下。

在生产环境中,我们有两台服务器,一台用于站点,一台用于数据库。 Active Directory 也已实现且功能齐全。根据我的检查,所有帐户都具有管理中心的“创建子站点”权限,如另一个主题所示。

有什么想法吗?

提前致谢。

【问题讨论】:

    标签: c# visual-studio sharepoint wss-3.0 deployment


    【解决方案1】:

    问题解决了。

    在将日志和异常写入 txt 文件并被共享点日志误导之后,真正发生的是我的代码中的列名错误。由于这是一个非常具体的定制,它有一些列名逐字写入代码。其中一个在它周围有“_”,例如_Column_ 在列表中,在共享点中。

    但在 SQL 中,它没有 '_'。

    回想起来,似乎有人创建了列表,然后重命名了它。因此,当您创建一个列表时,它会在 SQL 中注册该列的 FIRST 名称。如果更改它,它不会在 SQL 上更改,它会在列表中更改,在 SharePoint 中,但 SQL 中的列名仍将保留其原始名称...

    如果你已经知道了,恭喜,因为这对我来说是一个如此大的发现......

    【讨论】:

    • 您是否更改了列的内部名称?因为您可以根据需要更改显示名称。
    • 好吧,我宁愿不要惹这个。他们更改了显示名称,内部剧照还是一样的……当它进入 SQL 时,它变得更加混乱。所以,我将重建 EventReceiver,而不要管它。不过感谢您的提示。
    【解决方案2】:

    尝试使用呢

    this.DisableEventFiring();
    try
    {
      using (SPSite site = new SPSite(siteId, properties.Site.SystemAccount.UserToken) {
    
      }
    }
    finally
    {
    this.EnableEventFiring();
    }
    

    如果你想在那里修改文件系统上的一些文件,当然你不能没有 RunWithElevatedPrivileges,否则它可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 2019-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多