从WCF服务访问SharePoint内容(列表)

时间:2011-02-17 09:37:44

标签: c# wcf sharepoint sharepoint-2007 wss

我编写了一个WCF服务,该服务尝试从SharePoint中的特定列表中读取列表项。出于测试目的,我使用Visual Studio ASP.Net开发服务器运行WCF服务。我将站点ID传递给Web服务,然后从Web服务尝试打开List并读取项目。但是当我尝试阅读这些项目时,我收到以下错误 -

  

此操作只能执行   在连接到的计算机上   具有的用户的服务器场   SQL Server中的权限读取   配置数据库。连接   这个服务器到服务器场,使用   SharePoint产品和   技术配置向导,   位于开始菜单中   管理工具。

以下是一些事实 -

  1. 我正在使用SharePoint 2007 x64 Windows Server 2008 x64,它是一个 单服务器安装(无服务器场)
  2. 我是农场管理员
  3. 我是系统管理员(但不是 域管理员)
  4. 我是SQL Server的SysAdmin 2005服务器是SharePoint 有数据库
  5. 我是网站集 列表所在的管理员 本
  6. 我将Visual Studio 2010打开为 adminsitrator
  7. 在任务管理器中,ASP.Net 开发服务器进程是 在我的帐户下运行
  8. 我不知道为什么我会收到这个错误。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

是sharepoint计算机上的WCF服务运行吗?我打赌你试图在Sharepoint框外部使用SharePoint对象模型。

如果要远程访问sharepoint数据,在自己的WCF服务或实际上任何其他程序中访问,则必须使用Lists.asmx Web服务从sharepoint检索数据。

事实上,在您的WCF中,您必须充当SP服务的客户端

[编辑]我的赌注是错的:)这是另一件要检查的事情

另请查看您的VS项目。将目标平台设置为“AnyCpu”或“X64”,以确保程序将使用正确的程序集和注册表项。

如果处理的是32位,对象模型将尝试打开HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node节点下的reg键,而不是sharepoint配置所在的HKEY_LOCAL_MACHINE\SOFTWARE

答案 1 :(得分:0)

尝试检查您的sharepoint应用程序池标识。例如,如果您尝试在服务中使用RunWithEvelatedPrivilegies使您的特权变得平庸,并且应用程序池标识没有所需的权限,您将收到此类消息。

答案 2 :(得分:0)

Okie。我发现了这个问题。这与我在SharePoint 2007中切换到x64开发以来一直面临的问题有关。当我将WCF服务部署到IIS时,一切正常。

使用Visual Studio 2010(无论我的项目的目标平台是什么)我都无法通过简单的控制台应用程序或简单的asp.net Web应用程序访问SharePoint内容。我已经清楚地知道问题出在x86 x64的东西上,直到现在我都无法解决它。我已经被这个很长时间困扰了。

如果您对此答案有任何意见,请发布。

旧参考 - Filenotfound exception while opening an SPSite object - x64