我收到此错误:
列表不存在 您选择的页面包含一个不存在的列表。它可能已被其他用户删除。在Microsoft.SharePoint.Library.SPRequestInternalClass.GetListsWithCallback ...
不幸的是,这不是错误的未发布的母版页表现形式 - 查询字符串中的列表GUID导致根网站中的几个列表之一用于在母版页的控件中显示用户设置。
使用以下代码访问列表:
_RootWeb = SPContext.Current.Site.RootWeb;
storageList = _RootWeb.GetList(_RootWeb.Url + "/Lists/" +
LocalStrings.TimeZoneStorageList.ListName);
SPListItemCollection result = list.GetItems(query);
SPListItem StorageItem = result[0];
xmlDoc.LoadXml(StorageItem[LocalStrings.TimeZoneStorageList.Fields.UserXML]
.ToString());
当用户能够通过UI访问列表时,是否有任何可能导致该代码抛出AccessDeniedException的内容?
或者,当权限问题实际上完全位于其他地方时,SharePoint是否可以将列表报告为错误来源?
答案 0 :(得分:1)
有什么可能导致的 抛出一个代码 用户时AccessDeniedException 能够通过访问列表 UI?
这可能不适用于您的情况,但是,我发生过这种情况:
在这两种情况下,这些字段都没有包含在用户通常使用的视图或表单中,因此没有立即发现问题。
答案 1 :(得分:0)
您可以尝试将列表设为
_RootWeb.Lists[strListName]
其中strListName
是列表的标题。
答案 2 :(得分:0)
AccessDenied.aspx上的查询字符串中的列表ID实际上可能与实际错误无关。 相关代码类似于
try {
throw new AccessDeniedException();
}
catch (Exception ex) {}
storageList = _RootWeb.GetList(ListUrl);
如果未禁用CatchAccessDeniedException,SharePoint将看到异常,尽管catch和中止线程。由于这是在另一个线程上控制的,因此它不是同步的,并且代码继续运行足够长的时间,线程在访问列表的过程中中止。
错误消息的两个部分在技术上都是正确的 - 有一个AccessDeniedException,最后一个操作是试图打开列表 - 但两者之间没有实际连接。
实际问题是mysite上的服务帐户权限,这些权限自然不会出现在任何日志或错误消息中。
答案 3 :(得分:0)
对我来说这个问题非常简单。我有一个用户对当前网站有权限,这很好。但是,页面上有一个列表Web部件我收到错误,该错误从当前用户无权访问的子站点访问项目。
在我的情况下,错误应该已读为“拒绝列表访问”。