【问题标题】:SharePoint, Anonymous Access in FBA and SPContext issuesSharePoint、FBA 中的匿名访问和 SPContext 问题
【发布时间】:2010-10-10 04:01:06
【问题描述】:

我们在根共享点站点下创建了一个虚拟目录。此虚拟目录托管一个匿名访问的 Web 服务。 在代码中,我们正在执行以下操作:

using(SPSite site = new site(some uri))
{
    using(SPWeb web = site.RootWeb)
    {
        SPList list = web.Lists["SomeList"];
        SPListItem item = list.GetItemById(1); // Exception Here, COM Exception        
    }
}

即使使用 RunWithElevatedPrivileges,这也不起作用。

但是,如果 HttpContext.Current 设置为 null,则在创建 SPSite 之前,一切正常。

任何关于为什么会发生这种情况的指针都会非常有帮助。

亲切的问候,

【问题讨论】:

    标签: sharepoint


    【解决方案1】:

    这可能不是您的问题的原因,但您的SPWeb 不需要按照Roger Lamb here 处理,这是对Microsoft 最佳实践文档here 的提炼。

    【讨论】:

    【解决方案2】:

    恰恰相反!始终检查 null 并明确处置您的 SPSite 和您的 SPWeb 被认为是一种很好的做法,即使 SPSite 可以说会为您处置您的 SPWeb。

    这也不是问题的一部分:-) 在最坏的情况下,这会导致工作进程比平时更频繁地回收......

    您能否添加更多代码(整个课程)。

    还请包含错误的完整堆栈跟踪。 (关于如何启用堆栈跟踪和调试的详细信息在这里http://blogs.importchaos.com/alonsorobles/2008/06/09/enabling-the-sharepoint-safe-mode-call-stack-disabling-custom-errors-and-enabling-compilation-debugging/

    我也认为您确定列表和项目存在并允许匿名访问?

    问候 安德斯拉斯克

    【讨论】:

    • 实际上可以处理掉处理你代码的SPWeb,如果你在RootWeb上运行,你的网站就会宕机,这可不是什么好现象!
    • 安迪是正确的。 SPSite 对象应该被处理掉,因为它是被创建的;另一方面,不需要处理 SPWeb 对象 (Site.RootWeb)。
    • 使用确实配置了SPWeb。该列表和项目确实存在并且可供匿名用户访问。我可以同时处理 Web 和 List。但是当我尝试打开一个列表项时....COM Exception
    • 请看这个帖子...面临sinilar问题:mphacker.spaces.live.com/blog/cns!8040CC624DDC5404!290.entry
    • 是的 - 在这种情况下,SPWeb 不应该被丢弃,因为它是由 SPSite.RootWeb 提供的。这可能与您的问题无关,但会导致问题发生。
    猜你喜欢
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2014-03-12
    • 2011-01-10
    • 2010-11-23
    • 1970-01-01
    相关资源
    最近更新 更多