Assembly: Microsoft.PerformancePoint.ScoreCard.WebControls.dll
Version: 14.0.0.0
Class: Microsoft.PerformancePoint.ScoreCard.OlapViewCache
Derived Class: System.Web.UI.Page
Assembly: Microsoft.PerformancePoint.ScoreCard.WebControls.dll
Version: 15.0.0.0
Class: Microsoft.PerformancePoint.ScoreCard.OlapViewCache
Derived Class: Microsoft.SharePoint.WebControls.LayoutsPageBase
Differences between version 14 & 15: Other than derived class, none.
Result of the change: _layouts/PPSWebParts/OlapViewCache.aspx requires user authentication with SharePoint 2013 (v15), where as SharePoint 2010 (v14) did not. This means that while the ASPX application page generated by SharePoint designer can be placed in an anonymous access document library, elements referenced on the page via Image (<img src=""/>) tags require authentication. Failure to provide credentials causes the chart elements to not render, causing a critical failure of the dashboard in anonymous access sites.
Here's the work around we implemented.
- Create an ASPX page which duplicates the operations of Microsoft.PerformancePoint.ScoreCard.OlapViewCache.
- Copy the ASPX page from (1) to:
- 15\TEMPLATE\LAYOUTS\PPSWebParts
- 14\TEMPLATE\LAYOUTS\PPSWebParts
Note: an IISRESET may be required after placing the files in the 14 & 15 hives.
The following content implements the replacement OlapViewCache.aspx which derives from Page instead of LayoutsPageBase.
<%@ Page Language="C#" %> <%@ Assembly Name="Microsoft.PerformancePoint.ScoreCards.ServerCommon, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Import Namespace="Microsoft.PerformancePoint.Scorecards" %> <%@ Import Namespace="Microsoft.SharePoint.WebControls" %> <%@ Import Namespace="System" %> <%@ Import Namespace="System.Globalization" %> <%@ Import Namespace="System.Web" %> <%-- Name: OlapViewCache.aspx Deployment Location: 15\TEMPLATE\LAYOUTS\PPSWebParts Description: Replaces the SharePoint 2013 OlapViewCache.aspx utility page. The script code in this file was produced to replicate Microsoft.PerforamcePoint.Scorecards.WebControls which changed inheritance to LayoutsPageBase in SharePoint v15 (2013). In v14, System.Web.UI.Page was the derived class. The change in v15 caused the page to require authentication meanwhile, other dashboard components could be used anonymously. This ASPX class derives from Page once more. --%> <script runat="server" type="text/C#"> private void Page_Load(object sender, EventArgs e) { string externalkey = Request.QueryString["cacheID"]; string s1 = Request.QueryString["height"]; string s2 = Request.QueryString["width"]; string tempFcoLocation = Request.QueryString["tempfco"]; string str1 = Request.QueryString["cs"]; string str2 = Request.QueryString["cc"]; int height; int width; try { height = int.Parse(s1, (IFormatProvider)CultureInfo.InvariantCulture); width = int.Parse(s2, (IFormatProvider)CultureInfo.InvariantCulture); } catch { height = 480; width = 640; } int colStart = 1; int colCount = 100; try { if (str1.Length > 0) colStart = Convert.ToInt32(str1, (IFormatProvider)CultureInfo.CurrentCulture); if (str2.Length > 0) colCount = Convert.ToInt32(str2, (IFormatProvider)CultureInfo.CurrentCulture); } catch { colStart = 1; colCount = 100; } string mimeType; string viewHtml; byte[] bytesImageData; if (!BIMonitoringServiceApplicationProxy.Default .GetReportViewImageData(tempFcoLocation, externalkey, height, width, colStart, colCount, out mimeType, out viewHtml, out bytesImageData)) return; if (mimeType.IndexOf("TEXT", StringComparison.OrdinalIgnoreCase) >= 0) { Response.ContentType = mimeType; Response.Write(viewHtml); } else { if (bytesImageData.Length <= 0) return; Response.Clear(); Response.ContentType = mimeType; Response.BinaryWrite(bytesImageData); HttpContext.Current.ApplicationInstance.CompleteRequest(); } } </script>
hi i did implemented this and works fine and after report generated but now i am facing problem to export this report to excel, when i did export it asking authentication for anonymous users who viewing dashboards
ReplyDeleteany workaround for my issue export report to excel ?
ReplyDeleteHi, yep. We used the same process for all of the ASPX pages in the 15\TEMPLATE\LAYOUTS\PPSWebParts folder. You'll need to decompile the code referenced in the page's code-behind class. Tools like JetBrains dotPeek work well to decompile the code.
Delete