2010-07-07 49 views
0

我构建了一个以普通用户帐户运行的控制台应用程序,以编程方式访问共享点列表。为了访问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列表等提前

感谢

回答

-1

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

+0

嗯,是的。如同给账户,你在db访问下运行控制台应用程序。它仍然很不清楚你想在这里实现什么? – Ryan 2010-07-07 13:58:51

+0

将数据从Sharepoint迁移到另一个数据库,现在有意义吗? – TrustyCoder 2010-07-07 17:23:10

+0

为什么您需要使用用户凭证访问SharePoint? – Ryan 2010-07-07 18:03:04

0

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

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

这是Web应用程序,其中所使用的帐户是在AppDomain帐户的IIS网站的不同。

但是 - 这是一个非常不标准的设置,充满安全风险 - 你真的想给你的用户直接访问数据库的权限吗?

相反,我可以建议你再看看你的设计 - 你想达到什么目的?

+0

即使应用程序池在另一个帐户的上下文中运行,Web应用程序如何管理使用NETWORK SERVICE的凭据。 – TrustyCoder 2010-07-07 09:56:12

+0

呃 - 它没有。 – Ryan 2010-07-07 13:55:51