Wednesday, July 13, 2016

Retrieving all list items from a list which has crossed threshold limit in O365/sharepoint online using REST


To retrieve list item from a list which has already crossed the threshold limit i.e. 5000 items in 0365
this can only be done if we have indexed the list previously, i mean we can only query a list which has indexed column which has been created while list creation, in office 365 we cannot increase the threshold limit more than 5000 but we have an option to do that in on perm for up to 20000 items

increasing a threshold limit is not suggested by Microsoft, this will effect the performance, the only option to do this is to pull up data from a large list(more than 5000) in batches, you can batch data up to 4999 in once rest call and need to run untill the total count of the list completes

in the below code "ArchivedList" object will store all the items from a list in batch basis
use the script editor webpart to check this code.

<script src="https://yoursharepointsite/SiteAssets/Java%20Script%20Files/jquery-1.10.2.js"></script>  
<script type="text/javascript">
var ArchivedList = [];
var ListTest=[];
var i=0;
$(document).ready(
       function () {

           var spHostUrl = "https://yoursharepointsite";
           //Build absolute path to the layouts root with the spHostUrl
           var layoutsRoot = spHostUrl + '/_layouts/15/';
           $.getScript(layoutsRoot + "SP.Runtime.js", function () {
               $.getScript(layoutsRoot + "SP.js", getListData);
           }
           ); 
       }
     );
function getDataFromUrl(endpoint) {
     return jQuery.ajax({
         url: endpoint,
         method: "GET",
         headers: {
             "Accept": "application/json; odata=verbose",
             "Content-Type": "application/json; odata=verbose"
         }
     });
}
function getLargeList(nextUrl) {
     var dfd = new $.Deferred();
     if (nextUrl == undefined) {
         dfd.resolve();
         return;
     }
     getDataFromUrl(nextUrl).done(function (listItems) {
         var items = listItems.d.results;
          ListTest=items;
          ArchivedList=ArchivedList.concat(ListTest);
         var next = listItems.d.__next;
   
         $.when(getLargeList(next)).done(function (){
             dfd.resolve();
         });
     });
     return dfd.promise();
}
function getListData() {
     var documentLibName = 'Archived';
     
     https://yoursharepointsite/_api/web/lists/getbytitle(documentLibName)/items?$select=Title,No_Days,Current_x0020_State,Form_x0020_Type,Modified,ContentType/Name,ContentType/Id&$expand=ContentType&$filter=(Modified ge '"+strtDate +"' and Modified le '"+endDate+"') and startswith(ContentTypeId,'0x0120') &$top=200
     var listServiceUrl1= _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/GetByTitle('Archived')/Items?$Select=Title,No_Days,Current_x0020_State,Form_x0020_Type,Modified,ContentType/Name,ContentType/Id&$expand=ContentType&$filter=startswith(ContentTypeId,'0x0120')&$top=200";
     
     
     
     var listServiceUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/GetByTitle('" + documentLibName + "')/Items?$Select=Title,No_Days,Current_x0020_State,Form_x0020_Type,Modified,ContentType/Name,ContentType/Id&$expand=ContentType&$top=200";
     $.when(getLargeList(listServiceUrl)).done(function () {
            alert(ArchivedList.length);
 });
 }

</script> 

Deleting data from workflow history list using JSON 

copy past the below code in script editor webpart.

<script src="https://sharepoint_yoursite/subsitename/SiteAssets/Java%20Script%20Files/jquery-1.10.2.js"></script>
    <script type="text/javascript">
var clientContext;
var website;
var oList;
var cnt = 0;
var collListItem;
// Make sure the SharePoint script file 'sp.js' is loaded before your code runs.
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady);

// Create an instance of the current context.
function sharePointReady() {
    clientContext = SP.ClientContext.get_current();
    website = clientContext.get_web();
    oList = website.get_lists().getByTitle('Workflow History');

    var camlQuery = new SP.CamlQuery();
    camlQuery.set_viewXml('<View><RowLimit>1000</RowLimit></View>');
    this.collListItem = oList.getItems(camlQuery);

    clientContext.load(website);
    clientContext.load(collListItem, 'Include(Id)');
    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded(sender, args) {

    var listItemInfo = '';
    var listItemEnumerator = collListItem.getEnumerator();

    while (listItemEnumerator.moveNext()) {
        var oListItem = listItemEnumerator.get_current();
        var ID = oListItem.get_id();
        var oListItemDel = oList.getItemById(ID);
        oListItemDel.deleteObject();
        clientContext.executeQueryAsync(Function.createDelegate(this, this.onDeleteSucceeded), Function.createDelegate(this, this.onDeleteFailed));
        console.log(ID + " : Deleted");
    }
}

function onQueryFailed(sender, args) {
    console.log('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}


function onDeleteFailed(sender, args) {
    console.log('Delete failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

function onDeleteSucceeded(sender, args) {
    cnt = cnt + 1;
    console.log('Delete success : ' + cnt);
}
</script> 

Saturday, June 18, 2016

SharePoint 2016: New site contents experience


I though of you showing all new site content which is going to come up in SharePoint 2016, below is the new look :)




New features in SharePoint 2016

I am listing down some of the import new features for SharePoint 2016, i believe you find this interesting, all the references are from MSDN


·        Fast site collection creation using PowerShell command "SPSiteMaster"
·        SharePoint Server 2016 Central Administration is now provisioned on the first server in a farm by default when using the SharePoint Products Configuration Wizard. Central Administration is not provisioned on additional servers in a farm by default.
You can provision or un-provision Central Administration on individual servers in a farm, no matter what the server role is by using the following methods:
·        The Services on Server page on Central Administration > System Settings
·        Windows PowerShell cmdlets:
New-SPCentralAdministration
Remove-SPCentralAdministration
·        The psconfig.exe -cmd adminvs operation
The SharePoint Products Configuration Wizard
Hybrid sites features
This feature allows your users to have an integrated experience while using SharePoint Server and SharePoint Online sites:
·        Users can follow SharePoint Server and SharePoint Online sites, and see them consolidated in a single list.
·        Users have a single profile in Office 365, where all of their profile information is stored.
Large file support
·        Previous versions of SharePoint did not support uploading or downloading files larger than 2,047 MB. SharePoint 2016 now allows you to upload or download larger files. You can configure the desired maximum file-size limit on a per-web application basis in your SharePoint farm.
·         
SharePoint Foundation is no longer available in the SharePoint Server 2016 release.


SharePoint Server 2016 doesn't support the standalone install option, so it is no longer available in the setup program. Use the MinRole during installation and choose one of the available install options. The Single Server Farm option where everything is installed on the same computer is supported for dev/test/demo purposes. When you use this option, you must install SQL Server yourself and then run the SharePoint Server 2016 farm configuration wizard

ForeFront Identity Manager client (FIM)

Earlier versions of SharePoint used ForeFront Identity Manager client (FIM) to synchronize between Active Directory and SharePoint. SharePoint Server 2016 no longer uses FIM as the synchronization client. The default process is Active Directory Import. You can also use any synchronization tool such as Microsoft Identity Manager 2016, or any third-party tool.


Excel Services in SharePoint
Excel Services and its associated business intelligence capabilities are no longer hosted on SharePoint Server. Excel Services functionality is now part of Excel Online in Office Online Server (this is the next version of Office Web Apps Server), and SharePoint users can use the services from there
If you currently use Excel Services in SharePoint 2013 and upgrade to SharePoint Server 2016 you must also deploy Office Online Server with Excel Online to ensure Excel Services functionality remains available.
Mini Roles
By using the new MinRole feature in SharePoint Server 2016, SharePoint farm administrators can define each server’s role in a farm topology. The role of a server is specified when you create a new farm or join a server to an existing farm. SharePoint automatically configures the services on each server based on the server's role, and the performance of the farm is optimized based on that topology.
Server role
Description
Front-end
Service applications, services, and components that serve user requests belong on Front-end web servers. These servers are optimized for low latency.
Application
Service applications, services, and components that serve backend requests (such as background jobs or search crawl requests) belong on Application servers. These servers are optimized for high throughput.
Distributed cache
Service applications, services, and components that are required for a distributed cache belong on Distributed Cache servers.
Search
Service applications, services, and components that are required for searching belong on Search servers.
Custom
Custom service applications, services, and components that do not integrate with MinRole belong on Custom servers. The farm administrator has full control over which service instances can run on servers assigned to the Custom role. MinRole does not control which service instances are provisioned on this role.
Single-server farm
Service applications, services, and components required for a single machine farm belong on a Single-Server Farm. A Single-Server Farm is meant for development, testing, and very limited production use. A SharePoint farm with the Single-Server Farm role cannot have more than one SharePoint server in the farm.


 

SharePoint 2016: New document library experience in O365/SharePoint online


Today morning i have seen a popup asking to experience the new document library changes in our company website, check the new changes for document libraries, hope you love this.






Now we can see folders in a list or in a tiles view and change the metadata fields and save it as a view









Wednesday, June 15, 2016

Error: Sorry something went wrong...the file … has been modified by … on in document library or document set

Issue: i am seeing the above error while updating an item inside document library with document set content type, it is happening while updating the item using JQuery code in office 365 with REST calls, and i am do that update for checking out(updating a custom column called checkout) document set and then updating the field columns, so i am seeing this error for the second update of item properties for a document set.

Resolution:

I have resolved this issue by removing the versioning from that particular document library
and the also unchecked the "Automatically update the workflow status to the stage name" and the other JQuery code change which may help resolving the issue is to reload the list before doing a second update using CSOM


Wednesday, February 17, 2016

K2 Vs Nintex workflows for SharePoint

Areas
K2
Nintex
Business
·         Good tool for representing processes visually
·         Support for delivery of data to process approvers and other stakeholders that includes the information they need to perform their role in the process in a friendly format. Ability to show them the data they need to make a decision on a variety of devices, and to record their decisions.
·         Good tools for monitoring and reporting process performance and identify delays.
·         Nintex Workflow is GUI base and easy to use. It is suited for workflows that are not too complex. It would be great to have more in depth training and the user guide has room for improvement as well
·         Nintex is a great tool for a logical, tech-minded individual without official development skills.

Support
·         K2 as has best support and great community base
·         Nintex lags in support
Advantages
·         User friendly
·         Reporting capability
·         Auditing capability
·         Workflow and business process management
·         Line of Business Data integration
·         Good for large data pulling
·         Easy upgrade to new versions
·         Non-technical users can implement somewhat complex solutions.
·         Email notifications easy.
·         Can see workflow task history visually.
·         Administration for Nintex is easy
Disadvantages
·         We found SharePoint's built-in process tools clumsy, hard to re-use, and not very powerful or flexible.
·         Getting setup to where you're actually start using the product can be quiet complex and the instructions are not quite clear
·         Error messages are completely vague, making it extremely difficult to debug.
·         Failures occur for random reasons.
·         Error notifications get sent out too frequently which confuse users.
·         Have performance issue when pulling larger lists
·         Support nightmare for failed workflows.
Cost
·         K2 blackpearl (enterprise) has a fixed cost for unlimited users and servers
·         Nintex has a price per web front-end.  This is key consideration when farming out multiple SharePoint front-ends.
Integration
·         K2 blackpearl provides exclusive activity/event library addressing common systems and scenarios ( AD integration for user management, Exchange integration, SAP, Salesforce,SharePoint integration for actions such as document management, user management, CRM). It also provides excellent framework to connect to LOB systems using Smart Objects. This helps developer’s focus on core process logic than interface details.
·         Nintex also is very tightly integrated with SharePoint and lacks integration ability to external LOB in the enterprise.
·         It also connects to databases and CRM systems, or integrating your SharePoint content with social media platforms
Conclusion
·         K2 is for medium to large budget, scaling to enterprise in IT pro-environment
·         Nintex is best suited for small business solutions which deals with lesser data and business can easily create workflows without any developer

.

Tuesday, September 8, 2015

Provider hosted app security in SharePoint apps


Check the below link, it was in detail.
https://samlman.wordpress.com/2015/03/02/security-in-sharepoint-apps-part-1/

Thursday, September 3, 2015

New Features in SharePoint 2016


  1. Role based configuration wizard for configuring a server role

  • Front end 
  • Application
  • Search
  • Specialized load
  • Distributed cache
  1. Zero downtime patching
  2. App launcher for on premise has been introduced
  3. Office 365 api's coming to On-premise 
  4. No Standalone machine any more there should be two servers two install SharePoint now one for SharePoint and other for Sql server
  5. No Foundation version any more
  6. Build one and deploy into two environments(for one premise and office 365)

Wednesday, September 2, 2015

BCS in Office 365


We can also call BCS an ORM(object relational map)
Secured store service is used to connect to external sources using different accounts apart from the organizational accounts

The main steps involved in devlopemt using BCS are:

  1. Creating external content types using designer or VS
  2. Importing external content type to BCS
  3. Configure the secured store
  4. Creating external lists
  5. Creating apps
Creation of App level ECT(external content type)

FileBackedMetadatCatalog loads External content type into it to easy access and also for creation of external lists
Specific finder is a method that is used to find one particular item, it is similar to a view on a list but i only returns one item on a list
We are have all the CRUD operational method for ECT to do
Sample code to connect to a list

Tuesday, September 1, 2015

Debugging Remote Event Recievers

  1. We must create a new azure service bus namespace using azure powershell
  2. The command give back a connection sting to connect to Azure environment with EndPoint
  3. Use this in visual studio for connecting to azure
  4. go to project properties
  5. inside that go to SharePoint tab
  6. Check the enable debugging via Azure service bus
  7. copy past the connection string that we got from command prompt
  8. insert a breakpoints and click on F5 for debugging

Remote event receivers in SharePoint 2013


The remote events supports

Site - Create, Move, Delete
List - Create, Delete
List schema - Create, Update, Delete
List Item - Create, Update, Delete, Move, CheckIn, UnCheckIn, CheckOut, AttachmentsAdded, AttachemntsRemoved, FileMoved, FileConverted
App - Install, Update, Uninstall

Some Impotent Points to be noted:
  • Remote event receivers call across the networks
  • After events use WCF(Windows communication foundation) call on remote web so that they do not block the sharepoint host nor delay the response back to the user
  • Remote event recievers will only workf if the concern list is present in App Web
  • SharePoint hosted apps doesnt support remote event receievers, its only provider hosted apps
  • IRemoteEventService an interface thats get inherited in remote event recievers
  • We have only two events called "ProcessEvent" which is a two way event and "ProcessOneWayEvent" for one way
  • Properties argument defines the event that has fired on a list item
  • We will be having only single entry point for all the events
  • Properties.ItemEventProperties is for an item events and Properties.ListEventProperties for list events
  • SPRemoteEventResult which is used to sent status back to SharePoint(used for sending information and also for canceling the events)


Before events example

After events example



  • App Life Cycle events are two way events
  • "ProcessOneWayEvent" never file in App related events
This are just brief points about remote event recievers.

Monday, August 31, 2015

points to be noted on Event receivers in SharePoint 2013


properties.ErrorMessage is used for showing error in event handlers
properties.ListItem.Updateoverwriteversion() is used to overwrite version in list item, rather than adding a new version to the item it overwrites the existing one.
this.EventFiringEnable = false or True to stop or start the events on a list item, when ever you use "Updateoverwriteversion()" method inside a event we should set "this.EventFiringEnable= True" to stop the recursion 

Thursday, August 27, 2015

SharePoint 2013 People Picker error: “Sorry, we’re having trouble reaching the server.”


If you see the above error while adding users to a group or to a site there are many resolutions which are out there in internet.

but for me i have tried everything which i seen based on the above error but nothing worked out, finally after extending the web application to new port number and deleting the same, the issue got fixed


Hope this helps others.

News feed error: SharePoint could not retrieve the content. Please try again later




If you see this error message, ther could be an issue with user profile service, Authentication issue and may a with distributed cache.

if you have already checked all of the above and still seeing the same issue, then check the microfeeds list and see whether you are able to see the items in it.

if you are not able to see items in micro feeds list, increase the threshold value of lists from 5000 to 10000 or something...

by default administrators have 20000 has the limit for each list so there will be no issues for administrators on news feeds.

we have figured it out when we see the above error while trying to access "Show all replies" inside a news feed.

Hope this helps others.



Monday, April 27, 2015

Oracle LDAP and SharePoint 2013 integration

I have came across a post for oracle and SharePoint 2013 integration, i think this will help other too.

http://blogs.msdn.com/b/ronalg/archive/2014/04/14/sharepoint-2013-and-forms-based-authentication-configuration-for-open-ldap.aspx


Friday, December 19, 2014

Setting Timespan for forms authenticated user in SharePoint

If you want to make user logout after one min of idle status try the below code, this is only for forms authenticated users.
Run the below script in powershell script

$Data = Get-SPSecurityTokenServiceConfig
$Data .UseSessionCookies = $true
$Data .FormsTokenLifetime = (New-Timespan –Minutes 2)
$Data .LogonTokenCacheExpirationWindow = (New-Timespan –Minutes 1)
$Data .Update() 

Enabling session in SharePoint


Error:System.Web.HttpException: Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive. Please also make sure that System.Web.SessionStateModule or a custom session state module is included in the <configuration>\<system.web>\<httpModules> section in the application configuration.

When you see the above error try the below resolution
Enable-SPSessionStateService -DefaultProvision

I have tried many solutions that are out there on other site but nothing seems to resolve my issue
finally used powershell command and site came up like magic.

Thursday, December 18, 2014

Important points on OAuth for SharePoint 2013


first and most important point is that OAuth is for apps and not for users in SharePoint
OAuth is Web Standard to manage permissions and security for modules like App on Web
OAuth is used to authenticate and authorize app and service
If you are developing an app on SharePoint online there is no need to create OAuth exclusively, it is integrated with the app by default
If development is done on SharePoint Onprem then we have two options:

1.Create a "high trust" app and deploy it, in this scenario tactically there wont be OAuth because there wont be any Authentication server(ACS) to send and get tokens. this type of method is used for creating internal Apps with in the network.

2.The other way is having an azure account and
   Set up SP2013 with Azure account
   create a certificate for SharePoint 2013
   register it in SharePoint server
the above all process is not so easy which it looks like.

CRUD operations in SharePoint 2013 using REST and C#.Net

Below is CRUD operations on a SharePoint list using Rest and C#
to get this working replace site with your site name
here i am using ContactList for CRUD operations


using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Xml;
namespace REST
{
    class Program
    {
        static string sharepointUrl = "http://Site/_api/web/Lists/getByTitle('ContactList')/items";
       public static Stream postStream;
       public static string results;
       public static string newFormDigest;

        static void Main(string[] args)
        {
            GetItems();
            PostItems();
            UpdateItems();
            DeleteItem();

         
        }

        private static void DeleteItem()
        {
             //184 in the below url is Item ID of a list
            Uri uri = new Uri("http://Site/_api/web/lists/GetByTitle('ContactList')/items(184)");
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            request.ContentType = "application/json;odata=verbose";
            request.Headers["X-RequestDigest"] = RequestDigestValue(out postStream, out results, out newFormDigest);
            request.Headers["X-HTTP-Method"] = "DELETE";
            request.Headers["IF-MATCH"] = "*";
            request.Credentials = CredentialCache.DefaultCredentials;
            request.Accept = "application/json;odata=verbose";
            request.Method = "POST";
            request.ContentLength = 0;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream());
        }

        private static void UpdateItems()
        {
         
            Uri uri = new Uri("http://Site/_api/web/lists/GetByTitle('ContactList')/items(185)");
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            request.ContentType = "application/json;odata=verbose";
            request.Headers["X-RequestDigest"] = RequestDigestValue(out postStream, out results, out newFormDigest);
            request.Headers["X-HTTP-Method"] = "MERGE";
            request.Headers["IF-MATCH"] = "*";
            request.Credentials = CredentialCache.DefaultCredentials;
            request.Accept = "application/json;odata=verbose";
            request.Method = "POST";
            string stringData = "{'__metadata':{'type':'SP.Data.ContactListListItem'}, 'Title':'Jaffa','Street':'Mystreet','City':'Chennai'}";
           // string stringData = "{ '__metadata': { 'type': 'SP.List' }, 'Title': 'New title' }";
            request.ContentLength = stringData.Length;
            StreamWriter writer = new StreamWriter(request.GetRequestStream());
            writer.Write(stringData);
            writer.Flush();

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream());
        }
        public Uri WebUri { get; private set; }
        private static void PostItems()
        {
            // 1st request to get the context information

         
            newFormDigest= RequestDigestValue(out postStream, out results, out newFormDigest);

            Uri webUri = new Uri("http://Site/");
       
            var digestRequest = new Uri(webUri, string.Format("/_api/web/lists/getbytitle('{0}')/items", "ContactList"));
            HttpWebRequest spNewRequest = (HttpWebRequest)HttpWebRequest.Create(digestRequest);
            CredentialCache credNewCache = new CredentialCache();

            //credNewCache.Add(new Uri(digestRequest), "NTLM", CredentialCache.DefaultNetworkCredentials);
            credNewCache.Add(digestRequest, "NTLM", CredentialCache.DefaultNetworkCredentials);
            spNewRequest.Credentials = credNewCache;
            spNewRequest.Method = "POST";
            spNewRequest.Accept = "application/json;odata=verbose";
            spNewRequest.ContentType = "application/json;odata=verbose";
            spNewRequest.Headers.Add("X-RequestDigest", newFormDigest);
            string listPostBody = "{'__metadata':{'type':'SP.Data.ContactListListItem'}, 'Title':'MyTitle','Street':'MystreetName','City':'Delhi'}";
   


            // For Content Length

            byte[] postByte = Encoding.UTF8.GetBytes(listPostBody);
            spNewRequest.ContentLength = postByte.Length;
            Stream postStreamBody = spNewRequest.GetRequestStream();
            postStreamBody.Write(postByte, 0, postByte.Length);
            postStreamBody.Close();
            HttpWebResponse webResponse = (HttpWebResponse)spNewRequest.GetResponse();
            results = GetHTTPResponse(webResponse, out postStream, out results);

        }

        private static string RequestDigestValue(out Stream postStream, out string results, out string newFormDigest)
        {
            string formdigestRequest = "http://Site/_api/contextinfo";
            CredentialCache credCache = new CredentialCache();
            credCache.Add(new Uri(formdigestRequest), "NTLM", CredentialCache.DefaultNetworkCredentials);
            HttpWebRequest spRequest = (HttpWebRequest)HttpWebRequest.Create(formdigestRequest);

            spRequest.Credentials = credCache;
            spRequest.Method = "POST";
            spRequest.Accept = "application/json;odata=verbose";
            spRequest.ContentLength = 0;


            HttpWebResponse endpointResponse = (HttpWebResponse)spRequest.GetResponse();
            results = GetHTTPResponse(endpointResponse, out postStream, out results);



            // Get the FormDigest Value

            var startTag = "FormDigestValue";
            var endTag = "LibraryVersion";
            var startTagIndex = results.IndexOf(startTag) + 1;
            var endTagIndex = results.IndexOf(endTag, startTagIndex);
            newFormDigest = null;
            if ((startTagIndex >= 0) && (endTagIndex > startTagIndex))
            {

                newFormDigest = results.Substring(startTagIndex + startTag.Length + 2, endTagIndex - startTagIndex - startTag.Length - 5);

            }
            return newFormDigest;
        }
        private static String GetHTTPResponse(HttpWebResponse endpointResponse, out  Stream postStream, out  string results)
        {
            postStream = endpointResponse.GetResponseStream();
            StreamReader postReader = new StreamReader(postStream);
            results = postReader.ReadToEnd();
            postReader.Close();
            postStream.Close();
            return results;
        }
        private static void GetItems()
        {
           //Replace "Site" with your site name
            HttpWebRequest endpointRequest = (HttpWebRequest)HttpWebRequest.Create("http://Site/_api/web/Lists/getByTitle('ContactList')/items");

            endpointRequest.Method = "GET";
            endpointRequest.Accept = "application/json;odata=verbose";
            NetworkCredential cred = new System.Net.NetworkCredential("UserName", "Password", "Domain");
            endpointRequest.Credentials = cred;
            HttpWebResponse endpointResponse = (HttpWebResponse)endpointRequest.GetResponse();
            try
            {
                WebResponse webResponse = endpointRequest.GetResponse();
                Stream webStream = webResponse.GetResponseStream();
                StreamReader responseReader = new StreamReader(webStream);
                string response = responseReader.ReadToEnd();
                JObject jobj = JObject.Parse(response);
                JArray jarr = (JArray)jobj["d"]["results"];

                foreach (JObject j in jarr)
                {
                    //City and County are column names in a list
                    Console.WriteLine(j["City"] + "  " + j["County"]);

                }

                responseReader.Close();
                Console.ReadLine();

            }
            catch (Exception e)
            {
                Console.Out.WriteLine(e.Message); Console.ReadLine();
            }
        }
    }

}

Tuesday, March 11, 2014

1.difference between visual webpart and a standard webpart'
the SharePoint 2010 Visual Web Part is an ASCX web user control that is hosted inside a standard Web Part.

2.Difference between web user control and webpart
user control:
a.User controls must be compiled before use, which adds to the time it takes to load the control.
b.The Visual Web Developer designer provides support for designing the UI by using drag-and-drop operations that gives the control a consistent look-and-feel, which results in faster development.
Webpart:
a.Web Parts are precompiled and ready for use as soon as you need them.
b.The controls in Web Parts must be added by using code.

3.SharePoint site pages vs application pages
Site Pages:- Site Pages are Site or Web Scoped, User can customize Site Pages, Site Pages are stored in Content Database,
You cannot have custom code in Site Pages, Site Pages are Un-ghosted Pages.

Application Page:-
Application Pages are farm scoped, No customization can be done by the user, Application Pages are stored in WFE(Web Front End) in _layouts folder, You can have custom code in your Application Pages, Application Pages are Ghosted Pages.

4.Difference between WFE and application server
Microsoft SharePoint Foundation Web Application makes WFE in SharePoint farm

5.Difference between page library and site library
The Pages library is for storing Publishing Pages whereas the Site Pages library is for storing wiki and web part pages.
You only get the Pages library once the SharePoint Server Publishing feature is activated on the site. This library is usually used when you have requirements for content-centric pages that may use the scheduling, workflow and caching capabilities of SharePoint; such as in the case of public-facing websites. In a more collaborative scenario, you'd want to use the Site Pages library to create wiki and web part pages.

Saturday, March 16, 2013

Sandbox solutions support:

  1. Web parts
  2. Event Receivers
  3. Workflows
  4. List definitions

What is Sandbox solutions and its limitations


Sandbox solution is a new feature introduced in SharePoint 2010. It's a secured wrapper around webparts and other elements with limitations. There is no thumb rule that every webpart in SharePoint 2010 belongs to Sandbox Solution. But it's recommended to develop webparts with Sandbox solution. It allows administrators to monitor the solutions and control as required. SharePoint Site Collection administrators can view the resource utilization of each solution and can block if it consumes too much resources. Usually when sites working slow, developers complain the server is slow whereas site/server administrators blame on Develepor code/solutions. Now Microsoft put a Full Stop to that. :)

Technically speaking SharePoint solutions run in seperate worker processes and not in w3wp.exe. So It doesn't require IIS Reset or Application Pool Recycling. Without disturbing the SharePoint site, Sandbox solutions can be deployed. Only thing while deploying new version of Sandbox solution over existing solution, SharePoint will display No Solution found error in Sandbox Webparts on the page. However within seconds sandbox solutions getting deployed and it'll start working. In SharePoint 2007, only farm administrators can install/deploy developer solutions. But Now site collection administrators can deploy solutions with web based interface. This reduces the dependency of Farm Administrator and improves rapid deployment.

Sandbox Processes
Here the processes which required for Sandbox solutions.
  1. SPUCWorkerprocess.exe - Sandbox Worker process service which is a Seperate Service Application which actually executes Sandbox code. It should be started in every farm to use Sandbox solutions.

  2. SPUCWorkerProcessProxy.exe - Sandbox Worker process proxy which is working as a proxy for Worker process and takes care of Sandbox code execution. It can also serve to other farms if configured. Basically it helps site administrator for load balancing.

  3. SPUCHostService.exe - Sandbox User Code Service takes care of user code in Sandbox amd it can be started in the farms where to use Sandbox solutions.
Sandbox Limitations
As I said before, Sandbox is a secured wrapper and it has restrictions on code to run in SharePoint environment. Few Key limitations which developers should know are listed below.
  1. No Security Elevation - RunWithElevatedPrivileges which runs the specified block of code in application pool account(typically System Account) context is not allowed in Sandbox code. SPSecurity class also not allowed to use in Sandbox.

  2. No Email Support - SPUtility.SendMail method has been blocked explicitly in Sandbox, However .Net mail classes can be used to send mails. Additionaly sandbox won't allow to read Farm SMTP address. So developers has to specify the SMTP address in code itself(may be some other workaround).

  3. No Support to WebPartPages Namespace - Sandbox won't allow to use Microsoft.SharePoint.WebPartPages namespace.

  4. No Support to external Webservice - Internet web service calls are not allowed to ensure security in Sandbox solutions. Allow Partially Trusted code also can't be accessed within Sandbox.

  5. No GAC Deployment - Sandbox solutions are not stored in File System(Physical path) and assemblies can't be deployed to Global Assembly Cache(GAC). But it's available on C:\ProgramData\Microsoft\SharePoint\UCCache at runtime. Note the ProgramData is a hidden folder.

  6. No Visual Webparts - Visual Studio 2010 by default won't allow to create Visual Webparts to deploy as sandbox solution. But with Visual Studio PowerTools extensions(downloadable from Microsoft MSDN website) Visual Webparts can be developed and deployed as sandbox Solutions.
SharePoint Online which is SharePoint environment provided by Microsoft to manage SharePoint Sites in internet accepts only Sandbox solutions. Because SharePoint Online sites are Windows Servers at Microsoft Datacenters, Microsoft won't allow GAC deployment or file system access. In future Sandbox solution will give more features for developers.

SharePoint - Cannot convert a primitive value to the expected type 'Edm.Double'. See the inner exception for more details If y...

Ad