Running a webservice outside SharePoint which will receive data from a webform (on another server) in JSON format. The received data will be saved in a SharePoint list by using the client side object model. So far so good. The initial test where run by the administrator account (used for the installation and configuration of SharePoint). It worked fine. Because I have to run a workflow on 'new item created' on the SharePoint list, I needed a 'normal' account. The admin and service accounts are not allowed to start workflows. So, new AD account defined, gave the appropriate rights and voila... uh, not really.
Part of the code:
ListItemCreationInformation lici = new ListItemCreationInformation(); ListItem item = list.AddItem(lici); item["Title"] = HttpUtility.UrlDecode(name); item["Category"] = (categorie == "0") ? 15 : int.Parse(categorie); item["Street"] = HttpUtility.UrlDecode(street); item["Postal_x0020_Code"] = HttpUtility.UrlDecode(postalcode); item.Update(); _clientContext.ExecuteQuery();
I got the return message: Value does not fall within the expected range.
The callstack was something like this:
at Microsoft.SharePoint.Client.ClientRequest.ProcessResponseStream(Stream responseStream) at Microsoft.SharePoint.Client.ClientRequest.ProcessResponse() at Microsoft.SharePoint.Client.ClientContext.ExecuteQuery() at DnmWebServices.MessagingService.SendRtvRequest(String name, String category, String street, String postalcode) in c:\inetpub\wwwroot\DnmWebServices\App_Code\MessagingService.cs:line 128Line 128 in my case points to the _clientContext.ExecuteQuery.
It seems there can be several causes.
1). Use of invalid field name. You need to use the internal field name! However, that was not the case in my situation.
2). Change the List View Lookup Threshold value of the web application. Default value is 8, I changed it to 20 and big surprise: it worked! Thanks to this post.
Note: My item has some lookup fields some of which some have more than 8 items.
Little conclusion: So it seems that when using (one of) the system admin accounts, this list view lookup threshold is ignored in one way. By using non-system admin accounts, it can be a show stopper.
Steps to edit this value:
- Go to Central Administration > Application Management > Manage web applications
- Select the appropriate web application (in my case the SharePoint - 80)
- In the ribbon bar, select General Settings > Resourse Throttling
- Search for the List View Lookup Threshold and change the value to 20.