0

サイト コレクション レベルには、サイト全体と共に作成されたページ ライブラリがあります。最近、ソリューション ファイルを使用して新しいコンテンツ タイプを追加し、いくつかのページ レイアウトとマスター ページを変更するまで、長い間触れていませんでした。匿名ユーザー用に構成されたサイトを使用してホームページにアクセスすると、Web ページで「401 UNAUTHORIZED」エラーで失敗しました。URL が /_layouts/AccessDenied.aspx?Source=...&Type=list&name={...} であることに気付きました。次に、この文字列を認証済みユーザーのサイトにコピーすると、「エラー: アクセスが拒否されました」と表示されます。name={...} の GUID も確認しました。ページ ライブラリ リスト ID です。

ページ ライブラリのアクセス許可が正しく設定されていないようです。ただし、サブ サイトの他のページ ライブラリはすべて、同じ新しいコンテンツ タイプ、マスター ページ、およびページ レイアウトを使用して、匿名ユーザーの下でうまく機能しています。それらの権限は設定ページで同一であり (すべて親から継承)、すべて「匿名を許可」が有効になっています。

また、そのページ ライブラリで他のページ レイアウトを使用してページを作成し、コンテンツ タイプをクリーンアップしようとしましたが、すべて役に立ちませんでした。

4

1 に答える 1

0

これはページ ライブラリの権限の問題ではなく、私が修正したコードに関連しています。SPContext.Current.Site.RootWeb は、匿名ユーザーによる参照です。そのユーザーには、ルート フォルダーにアクセスする権限がありません。SPContext.Current.Site.RootWeb.RootFolder.WelcomePage は昇格された特権で機能すると想定していましたが、読んだ後、思ったほど特権が昇格していないことに気付きました。ここに説明があります。

    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;
于 2010-02-25T12:14:07.843 に答える