Reputation: 103
I've read file from url sharepoint and it returns that error:
Object reference not set to an instance of an object on server. The object is associated with property File
I've tried to count number of file in this folder url so it could count true, but when I printing the file name, it had error at line this.lblMessage.Text = listItems.First().File.Name.ToString();
This is my code:
var targetSiteURL = new Uri("https://mycompany.sharepoint.com/sites/test");
ClientContext cxt = new ClientContext(targetSiteURL.GetLeftPart(UriPartial.Authority));
cxt.Credentials = new SharePointOnlineCredentials(login, securePassword);
var list = cxt.Web.GetList("/sites/test/Shared%20Documents");
var listItems = list.GetItems(new CamlQuery());
cxt.Load(listItems,
items => items.Include(
item => item.File));
cxt.ExecuteQuery();
this.lblMessage.Text = listItems.First().File.Name.ToString();
Upvotes: 2
Views: 2191
Reputation: 3615
Use Caml Query to filter only files in the library as item.File.Name is used for File not Folder:
var list = cxt.Web.GetList("/sites/test/Shared%20Documents");
Microsoft.SharePoint.Client.CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml =
@"<View Scope='RecursiveAll'>
<Query>
<Where><Eq><FieldRef Name='FSObjType' /><Value Type='Integer'>0</Value></Eq></Where>
</Query>
</View>";
var listItems = list.GetItems(camlQuery);
cxt.Load(listItems,items => items.Include(item => item.File));
cxt.ExecuteQuery();
Console.WriteLine(listItems.First().File.Name);
Upvotes: 3