如何显示标准的SharePoint“拒绝访问”消息

4

我该如何将用户重定向到标准的SharePoint“访问被拒绝”页面,类似于下面的图片?

目前,我正在抛出UnauthorizedAccessException异常,但这个错误消息不像SP消息那样优雅。

throw new UnauthorizedAccessException("User does not have permission to access this list");

任何帮助都将不胜感激。 alt text

你说的方法在程序集中“丢失”是什么意思?你是否缺少某个引用? - Chris Ballance
好的,我的错。我试图引用的是:Microsoft.SharePoint.Utilities.SendAccessDeniedHeader,而不是Microsoft.SharePoint.Utilities.SPUtility.SendAccessDeniedHeader。无论如何,SendAccessDeniedHeader只显示“401 UNAUTHORIZED”消息 :-/ - Henrique Zacchi
3个回答

11

您可以使用SPUtility.HandleAccessDenied来实现此操作。(如果您只想强制显示“拒绝访问”页面,但实际上并没有处理异常,可以将异常参数传递为null。)


1
在SP2013中,将null传递给HandleAccessDenied会导致日志中出现NullReferenceException,并为用户显示错误页面。传递带有消息的SPException会导致该消息显示在日志中:“拒绝访问。异常:MESSAGE,StackTrace:...”,并为用户显示“抱歉,您没有共享此站点”的页面。 - lgaud

0

不太确定您要找什么,但如果您抛出SPException,则可以更好地控制错误页面的内容。


0

根据您的操作,您应该能够通过正确配置站点权限来实现此目的。如果您有某个页面不希望特定用户查看,则该页面的权限应相应设置。

但是,如果您正在尝试从某种事件处理程序或其他代码中执行此操作,则可能需要不同的解决方案。可能会有一个特定的SharePoint异常与此相关,但我不知道它是什么。

我想真正的问题是,您究竟要尝试阻止哪些访问?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接