我有一个简单的自定义Web部件,有三个下拉列表,可以从三个不同的列表中读取。当用户尝试访问此页面时,系统会提示他们输入密码,如果他们没有输入任何凭据,则会收到401错误。
我已经在中央管理员和网站本身启用了匿名访问,用户可以浏览到该站点并查看它而不会被提示输入密码。我确保匿名用户可以“查看”对问题列表的访问权限,但他们仍然无法查看带有自定义Web部件的任何页面。
它是SharePoint设置还是我必须在我的Web部件项目中添加内容?
提前致谢。
编辑:
我在页面加载中调用此方法仍然会出现相同的错误
private void LoadImageGallery()
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPSite oSiteCollection = SPContext.Current.Site;
SPWebCollection collWebsites = oSiteCollection.AllWebs;
DataTable dt = new DataTable();
for (int i = 0; i < collWebsites.Count; i++)
{
using (SPWeb oWebsite = collWebsites[i])
{
if (oWebsite.Title == "People")
{
SPList peopleList = oWebsite.Lists["Pages"];
if (peopleList != null)
{
SPListItemCollection collListItems = peopleList.Items;
dt = collListItems.GetDataTable();
// Include Surname to omit default/search page
dt = collListItems.GetDataTable();
rptImageGallery.DataSource = dt;
rptImageGallery.DataBind();
}
}
}
}
});
}
我也试过
SPSite oSiteCollection = SPContext.Current.Site;
SPWebCollection collWebsites = oSiteCollection.AllWebs;
以上runwithelevated ..
我将system \ sharepoint设置为在整个网站中拥有完全控制权
答案 0 :(得分:1)
自定义页面需要满足两个要求,以便匿名用户可以访问它:
true
。答案 1 :(得分:0)
对于匿名访问,您必须修改代码以访问List to bind下拉列表,如下所示。在 SPSecurity.RunWithElevatedPrivileges 委托方法中添加代码。
SPSecurity.RunWithElevatedPrivileges(delegate() {
using (SPSite site = new SPSite(web.Site.ID))
{
//ADD YOUR WEB PART Code HERE
}
});
重要提示:您必须在此委托中创建SharePoint对象,否则代码将无法使用管理员访问权限运行。