2010-07-06 45 views
0

我试图列出所有SharePoint网站(父级和子级)上的所有链接。当我以管理员用户身份登录时,它工作得很好。但是,当我以普通用户身份登录时,我遇到拒绝访问错误。当我检查SPWebCollection的count属性时,会引发错误。询问所有网站的计数时访问被拒绝 - SharePoint WSS 3.0 SP2

SPSite oSiteCollection = SPContext.Current.Site; 
SPWebCollection collWebsite = oSiteCollection.AllWebs; 

StringBuilder labelText = new StringBuilder(); 

for (int i = 0; i < collWebsite.Count; i++) // <---- Access denied on count 
{ // get links } 

我试图添加给我的普通用户完整的站点控制,我仍然收到访问被拒绝的错误。任何想法访问计数属性时正在检查什么访问规则?

回答

0

您可以在SPSecurity上使用RunWithElevatedPrivileges方法尝试使用您的应用程序池帐户。

SPSecurity.RunWithElevatedPrivileges(delegate() 
{ 
    SPSite oSiteCollection = SPContext.Current.Site; 
    SPWebCollection collWebsite = oSiteCollection.AllWebs; 

    StringBuilder labelText = new StringBuilder(); 

    for (int i = 0; i < collWebsite.Count; i++) // <---- Access denied on count 
    { // get links } 
}); 
+0

看起来像有上ObjectModel SPWebCollection的=真 Count属性需求的安全行动: 公众覆盖诠释计数 { [SharePointPermission(SecurityAction.Demand,ObjectModel =真)] 得到 { this.EnsureWebsData(); return this.m_strWebNames.Length; } } 任何想法的权限配置? – Dave 2010-07-07 13:54:34

+0

如果我使用RunWithElevatedPrivileges,我会得到相同的结果 – Dave 2010-07-07 13:55:47