SPWebApplication.Sites未返回Sharepoint 2010中的所有站点

SPWebApplication.Sites未返回Sharepoint 2010中的所有站点,sharepoint,sharepoint-2010,sitecollection,Sharepoint,Sharepoint 2010,Sitecollection,我有一个定时器工作,扫描所有的网站和所有的网站。在SPWebApplication.Sites中循环时,除了一个站点外,其他所有站点都会列出 代码如下: foreach (SPWebApplication app in service.WebApplications) { foreach (SPSite site in app.Sites) {

我有一个定时器工作,扫描所有的网站和所有的网站。在SPWebApplication.Sites中循环时,除了一个站点外,其他所有站点都会列出

代码如下:

  foreach (SPWebApplication app in service.WebApplications)
                {
                    foreach (SPSite site in app.Sites)
                    {
                        // site missing here   
                        foreach (SPWeb web in site.AllWebs)
                        { // stuff here  }
                    }
                }  

所有站点都显示在中央管理中。有什么想法吗?

问题是内部循环中缺少web.Dispose(),这使得代码在我要查找的网站集之前崩溃


由于无法在catch()中捕获Dispose错误,因此代码似乎正在运行“正常”

缺少的是什么?你有正确的权限吗?如果将此代码包装在
SPSecurity.RunWithElevatedPrivileges
块中,会怎么样?我将内部部分(在foreach web之后)包装到RunWithElevatedPrivileges中。此代码在作业定义中运行。应具有所需的权限请尝试在此块中包裹外环。一个可能的原因是
app.Sites
枚举没有足够的权限。这是完全不同的。在之前加载的站点对象中使用了Dispose:)很高兴您找到了解决方案。请回答您自己的问题,以便将问题标记为已回答。