Question

I am having troubles to get it running and wanted to ask you if you know if it is possible to use CSOM in SP 2013 Farm Solutions?

I constantly get an 401 unauthorized exception.

Here is how I create the clientcontext:

this.webUrl = SPContext.Current.Web.Url;
this.siteUrl = SPContext.Current.Site.Url;

clientContext = new SP.ClientContext(this.webUrl);
clientContext.Credentials = CredentialCache.DefaultNetworkCredentials;

As I want to share the code between an SharePoint Autohosted app and my farm solution I have to use the CSOM.

Was it helpful?

Solution

This won't work because of internal security checks of SharePoint, and deactivating them isn't recommended.

Therefore you abstract your main code and create a semi intelligent data binding layer in your class to load the data. Dynamically loading in the required namespace for reading in the data, by using reflection.

System.Reflection.Assembly asmbly;
asmbly = System.Reflection.Assembly.Load("Microsoft.SharePoint")

object clss;
clss = asb.CreateInstance("Microsoft.SharePoint.Foo")

Yes it would be a little more code, but if you abstract it properly and load the data into a List for example, then this code will be minimal.

Reference - Dynamic Namespace Imports and Switching:

http://www.codeproject.com/Articles/32828/Using-Reflection-to-load-unreferenced-assemblies-a

http://www.debenu.com/kb/switching-between-the-32-bit-and-64-bit-dll-versions-of-debenu-quick-pdf-library/

Licensed under: CC-BY-SA with attribution
Not affiliated with sharepoint.stackexchange
scroll top