2010-02-24 24 views
0

在網站集級別中,有一個Page庫,它已與整個網站一起創建。直到最近我還沒有觸及它,直到最近我添加了新的內容類型,使用解決方案文件修改了一些頁面佈局和母版頁。當使用爲匿名用戶配置的站點訪問主頁時,它在網頁上出現「401 UNAUTHORIZED」錯誤。我注意到URL是/_layouts/AccessDenied.aspx?Source= ... & Type = list & name = {...}然後,我將該字符串複製到經過身份驗證的用戶的站點,它顯示爲「Error:Access Denied」 。我還檢查了名稱= {...}。這是頁面庫列表ID。重置SharePoint中anonymouse用戶的頁面庫權限

看起來頁面庫權限沒有正確設置。然而,其他網站的子網站庫在匿名用戶下運行良好,使用相同的新內容類型,母版頁和頁面佈局。他們在設置頁面上的權限是相同的(都從父級繼承),並且都啓用了「允許匿名」。

我也嘗試在該頁面庫中使用其他頁面佈局創建頁面,清理內容類型,都沒有幫助。

回答

0

這不是頁面庫的權限問題,而是它與我修改的代碼有關。 SPContext.Current.Site.RootWeb是匿名用戶的參考。該用戶無權訪問根文件夾。我認爲SPContext.Current.Site.RootWeb.RootFolder.WelcomePage可以使用提升的權限,但在讀完一些內容後,我意識到它並不像我想的那樣提升權限。 Here的解釋。

bool rtn = false;    
    SPWeb rootWeb = SPContext.Current.Site.RootWeb; 
    SPSecurity.RunWithElevatedPrivileges(delegate() 
    { 
     using (SPSite site = new SPSite(rootWeb.Site.Url)) 
     { 
      using (SPWeb web = site.OpenWeb()) 
      { 
       rtn = web.Url + "/" + web.RootFolder.WelcomePage 
         == this.Page.Request.Url.AbsoluteUri; 
      } 
     } 
    }); 
    return rtn;