在网站集级别中,有一个页面库,它与整个站点一起创建。直到最近我才添加新的内容类型,使用解决方案文件修改了一些页面布局和母版页,我没有长时间触摸它。使用为匿名用户配置的站点访问主页时,它在网页上出现“401 UNAUTHORIZED”错误失败。我注意到URL是/_layouts/AccessDenied.aspx?Source = ...& Type = list& name = {...}然后我将此字符串复制到经过身份验证的用户的网站,它显示为“错误:访问被拒绝”。我还检查了名称= {...}的指南。这是页面库列表ID。
似乎未正确设置页面库权限。但是,子站点的其他页面库在匿名用户下运行良好,使用相同的新内容类型,母版页和页面布局。他们的权限在设置页面上是相同的(所有都从父级继承)并且都启用了“允许匿名”。
我还尝试在该页面库中创建包含其他页面布局的页面,清理内容类型,但都没有帮助。
答案 0 :(得分: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;