以编程方式使用模拟访问共享点列表

时间:2010-07-07 08:13:36

标签: sharepoint impersonation

我构建一个在普通用户帐户下运行的控制台应用程序,以编程方式访问sharepoint列表。为了访问Sharepoint对象,控制台应用程序在运行Sharepoint的上下文中模拟用户。模拟是成功的,但是当我尝试访问任何共享点SPWeb对象时,会发出以下错误,如下所示 spWeb.ID ='spWeb.ID'引发类型'System.Data.SqlClient.SqlException'的异常 base {System.Data.Common.DbException} = {“无法打开数据库\”WSS_Content_92 \“登录请求。登录失败。\ r \ n登录失败,用户'DOM \ USER'。”}

imepersonation是否应该允许访问底层数据库,还需要显式授予当前用户访问权限以访问sharepoint列表等。

提前致谢

2 个答案:

答案 0 :(得分:0)

在访问对象模型时在控制台或Windows应用程序中 - 当您模拟用户时,数据库连接将在用户帐户凭据下进行 - 因此实际上您必须为每个用户提供相当高级别的权限访问数据库(或者更好地使它们成为具有这些权限的组的成员)。

http://technet.microsoft.com/en-us/library/cc721638(office.12).aspx

这与使用的帐户是IIS网站的AppDomain帐户的网络应用程序不同。

然而 - 这是一个非常非标准的设置,并且充满了安全风险 - 您是否真的想让您的用户直接访问该数据库?

相反,我可以建议您再次关注您的设计 - 您想要实现的目标是什么?

答案 1 :(得分:-1)

在与应用程序池相同的用户的上下文中运行控制台应用程序。所以解决方案是使用runas命令。