Quantcast
Channel: SharePoint 2013 - Development and Programming forum
Viewing all articles
Browse latest Browse all 25064

When reading data from external list getting error -- Access denied. You do not have permission to perform this action or access this resource

$
0
0

  • I have created one external list and using BCS i am fetching data from SQL server and showing into "Externallist" perfectly.
  • Now i have to read data from external list to my "High trust App"

  • I have written down below mentioned code.

At the below line

listItemCollection.Include(listItemExpressions));
clientContext.ExecuteQuery();

in "Bindexternallist()" method  i am getting error  --   Access denied. You do not have permission to perform this action or access this resource

Please suggest how to solve this error........

-----------------------------------------------------------------------Code--------------------------------------------

publicvoidBindexternallist()

{

string TargetSiteUrl = hostWeb.ToString();// ConfigurationManager.AppSettings["SiteURL"];

string TargetListName ="externallistabc";

using (var clientContext = TokenHelper.GetS2SClientContextWithWindowsIdentity(hostWeb, Request.LogonUserIdentity))

{

 

List listOrganisationHierarchy = clientContext.Web.Lists.GetByTitle(

TargetListName);

clientContext.Load(

listOrganisationHierarchy.Views,

viewCollection => viewCollection.Include(

view => view.ViewFields,

view => view.HtmlSchemaXml));

clientContext.Load(clientContext.Site,

s => s.MaxItemsPerThrottledOperation);

clientContext.ExecuteQuery();

Microsoft.SharePoint.Client.

View targetView = listOrganisationHierarchy.Views[0];

string method = ReadMethodFromViewXml(

targetView.HtmlSchemaXml);

ViewFieldCollection viewFields = targetView.ViewFields;

CamlQuery vlQuery = CreateCamlQuery(

clientContext.Site.MaxItemsPerThrottledOperation,

method,

viewFields);

Expression<Func<Microsoft.SharePoint.Client.ListItem,object>>[] listItemExpressions =

CreateListItemLoadExpressions(viewFields);

Microsoft.SharePoint.Client.

ListItemCollection listItemCollection =

listOrganisationHierarchy.GetItems(vlQuery);

IEnumerable<Microsoft.SharePoint.Client.ListItem> resultData = clientContext.LoadQuery(

listItemCollection.Include(listItemExpressions));

clientContext.ExecuteQuery();

 

tblOrganisationHierarchy.Columns.Add(

"Level");

foreach (Microsoft.SharePoint.Client.ListItem li in resultData)

{

tblOrganisationHierarchy.Rows.Add(li[

"Level"]);

}

DataView OrganisationHierarchyview =newDataView(tblOrganisationHierarchy);

DataTable distinctValuesOrganization = OrganisationHierarchyview.ToTable(true,"Level");

ddlOrganizationLevel.DataSource = distinctValuesOrganization;

ddlOrganizationLevel.DataTextField =

"order";

ddlOrganizationLevel.DataValueField =

"order";

ddlLevel.DataBind();

ddlLevel.Items.Insert(0,

"Select");

}

}


privatestaticstring ReadMethodFromViewXml(string viewXml)

{

XmlReaderSettings readerSettings =newXmlReaderSettings();

readerSettings.ConformanceLevel =

ConformanceLevel.Fragment;

XmlReader xmlReader =XmlReader.Create(

newStringReader(viewXml), readerSettings);

while (xmlReader.Read())

{

switch (xmlReader.NodeType)

{

caseXmlNodeType.Element:

if (xmlReader.Name =="Method")

{

while (xmlReader.MoveToNextAttribute())

{

if (xmlReader.Name =="Name")

{

return xmlReader.Value;

}

}

}

break;

}

}

thrownewException("Unable to find Method in View XML");

}

privatestaticCamlQuery CreateCamlQuery(

uint rowLimit,string method,ViewFieldCollection viewFields)

{

CamlQuery query =newCamlQuery();

XmlWriterSettings xmlSettings =newXmlWriterSettings();

xmlSettings.OmitXmlDeclaration =

true;

StringBuilder stringBuilder =newStringBuilder();

XmlWriter writer =XmlWriter.Create(

stringBuilder, xmlSettings);

writer.WriteStartElement(

"View");

writer.WriteAttributeString(

"Scope","RecursiveAll");

writer.WriteStartElement(

"Method");

writer.WriteAttributeString(

"Name", method);

writer.WriteEndElement();

if (viewFields.Count > 0)

{

writer.WriteStartElement(

"ViewFields");

foreach (string viewField in viewFields)

{

if (!string.IsNullOrEmpty(viewField))

{

writer.WriteStartElement(

"FieldRef");

writer.WriteAttributeString(

"Name", viewField);

writer.WriteEndElement();

}

}

writer.WriteEndElement();

}

writer.WriteElementString(

"RowLimit", rowLimit.ToString(CultureInfo.InvariantCulture));

writer.WriteEndElement();

writer.Close();

query.ViewXml = stringBuilder.ToString();

return query;

}

privatestaticExpression<Func<Microsoft.SharePoint.Client.ListItem,object>>[]

CreateListItemLoadExpressions(

ViewFieldCollection viewFields)

{

List<Expression<Func<Microsoft.SharePoint.Client.ListItem,object>>> expressions =

newList<Expression<Func<Microsoft.SharePoint.Client.ListItem,object>>>();

foreach (string viewFieldEntry in viewFields)

{

string fieldInternalName = viewFieldEntry;

Expression<Func<Microsoft.SharePoint.Client.ListItem,object>>

retrieveFieldDataExpression =

listItem => listItem[fieldInternalName];

expressions.Add(retrieveFieldDataExpression);

}

return expressions.ToArray();

}



Viewing all articles
Browse latest Browse all 25064

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>