CSOM in FarmSolution
-
10-12-2019 - |
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.
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