问题
I've written a WCF service which tries to read the list items from a particular list in SharePoint. For testing purposes I run the WCF service using Visual Studio ASP.Net Development server. I pass the Site ID to the web service and from the web service I try to open the List and read the items. But when I try to read the items I'm getting the following error -
This operation can be performed only on a computer that is joined to a server farm by users who have permissions in SQL Server to read from the configuration database. To connect this server to the server farm, use the SharePoint Products and Technologies Configuration Wizard, located on the Start menu in Administrative Tools.
Here are some facts -
- I'm using SharePoint 2007 x64 in Windows Server 2008 x64 and it is a single server installation (no farm)
- I'm a Farm administrator
- I'm a System Administrator (but not domain administrator)
- I'm a SysAdmin for the SQL Server 2005 server in which is SharePoint is having its databases
- I'm the Site Collection Administrator in which the List is present
- I opened Visual Studio 2010 as adminsitrator
- In task manager, the ASP.Net development server process is running under my account
I don't have any idea why I'm getting that error. Any ideas?
回答1:
is the WCF service runnig on the sharepoint computer ? I bet you are trying to use the SharePoint object model outsite the sharepoint box.
If you want to access remotely to the sharepoint data, in a WCF service on your own, or actually any other program, you will have to use the Lists.asmx web service to retrieve your data from sharepoint.
In fact, in your WCF you will have to act as a client to the SP services
[edit] my bet was wrong :) here is another thing to check
Also take a look in your VS project. Setup your target platform to "AnyCpu" or "X64" to ensure the program will use the correct assemblies and registry keys.
The object model will try to open the reg key under HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node
node if you process is 32 bits, instead of HKEY_LOCAL_MACHINE\SOFTWARE
where the sharepoint config resides
回答2:
Try to check your sharepoint application pool identity. If you, for example, trying to evelate you priviligies using RunWithEvelatedPrivilegies in your service, and app pool identity doesn't have required permissions, you will get such message.
回答3:
Okie. I found the issue. It is related to the same problem which I've been facing since I switched to x64 development in SharePoint 2007. When I deployed the WCF service to IIS everything worked fine.
Using Visual Studio 2010 (no matter what my target platform of my project is) I've never been able to access SharePoint content through a simple console application or a simple asp.net web application. I've clearly understood that the problem is with the x86 x64 stuffs and I've not been able to resolve it till now. I've been haunted by this for so long now.
If you have any comments on this answer please post it.
Old Ref - Filenotfound exception while opening an SPSite object - x64
来源:https://stackoverflow.com/questions/5027192/accessing-sharepoint-content-list-from-a-wcf-service