I have Data Form Web Part with Linked Data Source which consists of three SOAP data sources to different libraries on different sites (one parent site collection with two subsites). All was implemented via SharePoint Designer with no code as described at these posts Content query web part - include data from multiple lists http://blogs.microsoft.co.il/blogs/cizi/archive/2010/08/01/connect-to-another-library-in-sharepoint-designer-2010.aspx

All works fine, except that case when user hasn't permissions to one or more of sites. DFWP shows next message

Unable to display this Web Part. To troubleshoot the problem, open this Web page in a Microsoft SharePoint Foundation-compatible HTML editor such as Microsoft SharePoint Designer. If the problem persists, contact your Web server administrator.

Correlation ID:25c0eb98-50d6-4658-b0dd-f0c6b871dea3

and here are logs

Name=Request (POST:http://sharepointdevpc:80/sites/mcq/mcqc2/_vti_bin/Lists.asmx)
SoapAction: http://schemas.microsoft.com/sharepoint/soap/GetListItems
<?xml version="1.0" encoding="utf-8" ?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/"><listName>fa1e7229-9e93-411b-9bd1-4223a449b549</listName><viewName>f8b45d23-4559-4f36-8d9a-68b769da17bf</viewName></GetListItems></soap:Body></soap:Envelope>
Unknown SPRequest error occurred. More information: 0x80070005
Unknown SPRequest error occurred. More information: 0x80070005
SOAP exception: System.Threading.ThreadAbortException: Thread was being aborted.     at System.Threading.Thread.AbortInternal()     at System.Threading.Thread.Abort(Object stateInfo)     at System.Web.HttpResponse.End()     at Microsoft.SharePoint.Utilities.SPUtilityInternal.SendResponse(HttpContext context, Int32 code, String strBody)     at Microsoft.SharePoint.Utilities.SPUtility.HandleAccessDenied(HttpContext context)     at Microsoft.SharePoint.Utilities.SPUtility.HandleAccessDenied(Exception ex)     at Microsoft.SharePoint.Library.SPRequest.GetListsWithCallback(String bstrUrl, Guid foreignWebId, String bstrListInternalName, Int32 dwBaseType, Int32 dwBaseTypeAlt, Int32 dwServerTemplate, UInt32 dwGetListFlags, UInt32 dwListFilterFlags, Boolean bPrefetchMetaData, Boolean bSecurityTrimme...
...d, Boolean bGetSecurityData, Boolean bPrefetchRelatedFields, ISP2DSafeArrayWriter p2DWriter, Int32& plRecycleBinCount)     at Microsoft.SharePoint.SPListCollection.EnsureListsData(Guid webId, String strListName)     at Microsoft.SharePoint.SPListCollection.GetListByName(String strListName, Boolean bThrowException)     at Microsoft.SharePoint.SoapServer.SPBaseImpl.GetSPListByTitle(SPWeb spWeb, String strListName)     at Microsoft.SharePoint.SoapServer.SPBaseImpl.GetSPList(SPWeb spWeb, String strListName, Boolean bGetMetaData, Boolean bGetSecurityData)     at Microsoft.SharePoint.SoapServer.SPBaseImpl.GetSPList(String strListName, Boolean bGetMetaData, Boolean bGetSecurityData)     at Microsoft.SharePoint.SoapServer.ItemsCache.get_List()     at Microsoft.SharePoint.SoapServer.ListDataImpl.Ex...
...ecuteQuery(Boolean bUseDefaultViewQueryWhenEmpty, String strRootFolder, String strListName, String strViewName, String strQuery, String strViewFields, String strRowLimit, String strSince, String strQueryOptions, String strContains, SPWeb web, SPQueryOpt queryOpts, Hashtable updates)     at Microsoft.SharePoint.SoapServer.ListDataImpl.GetListItems(String strListName, String strViewName, String strQuery, String strViewFields, String strRowLimit, String strQueryOptions, String strWebID)     at Microsoft.SharePoint.SoapServer.ListDataValidatorImpl.GetListItems(String strListName, String strViewName, String strQuery, String strViewFields, String strRowLimit, String strQueryOptions, String strWebID)     at Microsoft.SharePoint.SoapServer.Lists.GetListItems(String listName, String viewName, SoapX...
...mlElement query, SoapXmlElement viewFields, String rowLimit, SoapXmlElement queryOptions, String webID)
Leaving Monitored Scope (Request (POST:http://sharepointdevpc:80/sites/mcq/mcqc2/_vti_bin/Lists.asmx)). Execution Time=89.7160290530867
Error while executing web part: System.Net.WebException: The remote server returned an error: (401) Unauthorized.     at System.Net.HttpWebRequest.GetResponse()     at Microsoft.SharePoint.WebControls.SoapDataSource.GetResponseString(SoapCommand currentSoapCommand)     at Microsoft.SharePoint.WebControls.SoapDataSource.ExecuteInternal(SoapCommand currentSoapCommand)     at Microsoft.SharePoint.WebControls.BaseXmlDataSource.Execute(String request)     at Microsoft.SharePoint.WebControls.BaseXmlDataSource.GetXmlDocument()     at Microsoft.SharePoint.WebControls.SingleDataSource.GetXPathNavigatorInternal()     at Microsoft.SharePoint.WebControls.SingleDataSource.GetXPathNavigator()     at Microsoft.SharePoint.WebControls.SyncMergedDataSource.GetXPathNavigator()     at Microsoft.SharePoint.Web...
...Controls.AggregateDataSourceView.get_AggregateNavigator()     at Microsoft.SharePoint.WebControls.SingleDataSource.GetXPathNavigator()     at Microsoft.SharePoint.WebPartPages.DataFormWebPart.GetXPathNavigator(String viewPath)     at Microsoft.SharePoint.WebPartPages.DataFormWebPart.PrepareAndPerformTransform(Boolean bDeferExecuteTransform)
Leaving Monitored Scope (DataBinding DataFormWebPart (mcq from MCQ, MCQC1, MCQC2 2)). Execution Time=456.066134235808
Leaving Monitored Scope (Request (POST:http://sharepointdevpc:80/sites/mcq/Pages/mcq-view.aspx)). Execution Time=1879.4241862019

I need that DFWP should skip data from unauthorized sites and show data from accessible sites.

Please give me advice how to reach this?


I don't believe this can be achieved without custom coding your own web part, or purchasing a 3rd party web part. You can try any of the popular vendors such as Lightning Tools, Bamboo Solutions, KwizCom, etc.

Alternatively, you might try achieving this with a client side solution using Javascript (like the Client Object Model, JQuery, SPServices, JSRender, JSViews, etc) and a Content Editor Web Part. Here is one example of someone outlining the steps for doing this: http://www.tcscblog.com/2012/01/17/insert-javascript-into-a-content-editor-web-part-cewp/

Basically it consists of: 1. Create your javascript (in this case all the code to access and push list contents into display area). 2. Upload your javascript to the site, for example into a Document Library, as a .txt file (.js are blocked by default). 3. Add a content editor web part to your page. 4. Modify the Content Link property of the web part to point to javascript txt file using a Server Relative path. 5. Save your page (and publish/check in if needed).


One potential way would be to rely on the SPDataSource being able to query across sites in the same Site Collection, however as pre-requisite you need to either create your own Content Type with the data structure so you could target your query easier (or using a certain Template of list - the bottom line is to be able to "identify data") - instead of using Linked Data Sources (assuming that was your main reason - to have all data in one) and change the SPDataSource as explained here http://blogs.msdn.com/b/sharepointdesigner/archive/2007/04/24/spdatasource-and-rollups-with-the-data-view.aspx

Security would not be an issue as the if you don't have access to data, you don't see it, but it works nevertheless at all times.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.