0

我开发了自定义 webpart。我可以将它添加到页面,网站所有者可以毫无问题地查看页面。

但是,站点访问者/用户被重定向到访问被拒绝的错误页面。当然,我必须做一些普通用户不允许做的事情。

但是让我烦恼的是,当我在 webpart 构造函数甚至变量声明中放置断点时,它不会被命中!(如果我尝试以有限的权限查看页面)。但是在我的浏览器中,我得到了拒绝访问页面。但是,如果我关闭该 Web 部件,我会立即访问该页面并且一切正常。

这里有什么问题?我希望我可以用调试器捕获异常以查看哪个语句是有罪的,但似乎 webpart 没有执行任何代码并且我得到了那个异常。

编辑:对不起,原来调试器现在命中了这些断点。不知道发生了什么变化,因为符号已加载。

4

3 回答 3

2

您的 Sharepoint 站点的信任级别是多少?您可能需要暂时给予 Fulltrust 以查看您是否有任何访问问题。

如果是,那么您的手上可能存在代码访问安全 (CAS) 问题。我的第一直觉是您的程序集没有必要的特权来为普通用户正确运行。您可以使用 webpart 的 manifest.xml 中的自定义 CAS 条目对其进行配置,例如,如果您正在调用外部资源,那么您可能必须配置 System.New.WebPermission 并定义允许您访问的 url。您可以在U2U 网站上找到更多信息。

还有你的 webpart 是做什么的?如果您尝试访问普通用户无权访问的资源(例如某些站点中的列表),那么您必须使用SPSecurity.RunWithElevatedPrivilages方法,以便您拥有必要的特权(小心创建新的站点实例在该方法中,以便正确填充上下文)。

于 2009-11-03T15:04:40.283 回答
0

找到了解决方案。

原来,我想通过尝试访问该组用户来确定用户是否属于特定组。因为如果用户没有这样的权限这是不可能的,它会抛出某种带有消息的内部异常

“无法评估表达式,因为代码已优化或本机框架位于调用堆栈顶部。”

无论如何,我现在学会了循环SPUser.Groups (SPGroupCollection)并检查我们是否有匹配的组,而不是枚举组负责人并查看他是否在里面。

于 2009-11-06T11:39:32.690 回答
0

您需要授予访问者组权限(更新个人 webpart)。但是,不建议这样做。如果您愿意,您可以创建一个单独的权限级别并将其与访问者组相关联。

干杯!!

于 2011-05-09T09:40:41.083 回答