SharePoint、FBA中的匿名访问和SPContext问题

SharePoint、FBA中的匿名访问和SPContext问题,sharepoint,Sharepoint,我们已经在根sharepoint站点下创建了一个虚拟目录。此虚拟目录承载匿名访问的Web服务。 在代码中,我们执行以下操作: using(SPSite site = new site(some uri)) { using(SPWeb web = site.RootWeb) { SPList list = web.Lists["SomeList"]; SPListItem item = list.GetItemById(1); // Exceptio

我们已经在根sharepoint站点下创建了一个虚拟目录。此虚拟目录承载匿名访问的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之前,一切正常

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


亲切问候,

这可能不是您问题的原因,但您的
SPWeb
不需要按照进行处理,这是Microsoft最佳实践文档的精华。

相反!始终检查null并显式地处理SPSite和SPWeb被认为是一种很好的做法,即使SPSite可以为您处理SPWeb

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

你可以添加一些代码(整个类)吗

另外,请包括错误的完整堆栈跟踪。 (有关如何在此处启用堆栈跟踪和调试的详细信息)

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

问候
Anders Rask

实际上可以处理处理代码的SPWeb,如果您在RootWeb上运行,您的站点将崩溃,这不是一个好现象!安迪是对的。SPSite对象正在创建,因此应将其丢弃;另一方面,SPWeb对象(Site.RootWeb)不需要处理。using会处理SPWeb。列表和项目确实存在,匿名用户可以访问。我可以处理Web和List。但是,当我尝试打开一个列表项时…COM例外请查看此线程…面临严重问题:是-在这种情况下,SPWeb不应该被处理,因为它是由SPSite.RootWeb提供的。这可能与您的问题无关,但会导致问题。请查看此线程,面对类似问题:如果这是您问题的答案,请将其作为答案提交并接受-这将帮助其他有类似问题的人。