private void processRDL(SSRS2006.ReportingService2006 SSRS, SPWeb web, SPListItem folder, SSRS2006.DataSourceReference dsr, SPDocumentLibrary list) { foreach (SPListItem li in list.GetItemsInFolder(list.DefaultView, folder.Folder)) { if (li.FileSystemObjectType == SPFileSystemObjectType.Folder) { processRDL(SSRS, web, li, dsr, list); } else { try { SSRS2006.DataSource[] dsstl = SSRS.GetItemDataSources(web.Url + "/" + li.Url); for (int i = 0; i < dsstl.Length; i++) { if (dsstl[i].Name == "EPMLiveReportDB") { dsstl[i].Item = dsr; } } SSRS.SetItemDataSources(web.Url + "/" + li.Url, dsstl); } catch { } } } }
public static void ProcessReportDataSources(SPWeb web, string FileList) { XmlDocument docFiles = new XmlDocument(); docFiles.LoadXml("<Files/>"); try { docFiles.LoadXml(FileList); } catch { } string ssrsurl = EPMLiveCore.CoreFunctions.getWebAppSetting(web.Site.WebApplication.Id, "ReportingServicesURL"); SSRS2006.ReportingService2006 SSRS = new SSRS2006.ReportingService2006(); SSRS.Url = ssrsurl + "/ReportService2006.asmx"; SSRS.UseDefaultCredentials = true; SPList tList = web.Lists.TryGetList("Report Library"); if (tList != null) { SPDocumentLibrary list = (SPDocumentLibrary)tList; SPListItemCollection folders = list.GetItemsInFolder(list.DefaultView, list.RootFolder); SSRS2006.DataSourceReference dsr = new SSRS2006.DataSourceReference(); dsr.Reference = web.Url + "/Report Library/Data Sources/EPMLiveReportDB.rsds"; foreach (SPListItem li in folders) { processRDL(SSRS, web, li, dsr, list, docFiles); } } }
private void processReports(SPWeb web) { SPSecurity.RunWithElevatedPrivileges(delegate() { string username = ""; string password = ""; EPMLiveCore.ReportAuth _chrono = SPContext.Current.Site.WebApplication.GetChild <EPMLiveCore.ReportAuth>("ReportAuth"); if (_chrono != null) { username = _chrono.Username; password = EPMLiveCore.CoreFunctions.Decrypt(_chrono.Password, "KgtH(@C*&@Dhflosdf9f#&f"); } bool reportingIntegratedMode = true; bool.TryParse(EPMLiveCore.CoreFunctions.getWebAppSetting(SPContext.Current.Site.WebApplication.Id, "ReportsUseIntegrated"), out reportingIntegratedMode); if (!reportingIntegratedMode) { Guid fieldsFeature = new Guid("acdb86be-bfa5-41c7-91a8-7682d7edffa5"); if (web.Features[fieldsFeature] == null) { web.Features.Add(fieldsFeature); } Guid receiversFeature = new Guid("a8ebe311-83e1-48a4-ab31-50f237398f44"); if (web.Features[receiversFeature] == null) { web.Features.Add(receiversFeature); } string dataSourceString = String.Format(@"<?xml version=""1.0"" encoding=""utf-8""?> <DataSourceDefinition xmlns=""http://schemas.microsoft.com/sqlserver/reporting/2006/03/reportdatasource""> <Extension>SQL</Extension> <ConnectString>Data Source={0};Initial Catalog={1};</ConnectString> <CredentialRetrieval>Store</CredentialRetrieval> <WindowsCredentials>{2}</WindowsCredentials> <ImpersonateUser>False</ImpersonateUser> <Enabled>True</Enabled> </DataSourceDefinition>", txtReportServer.Text, txtReportDatabase.Text, chkWindows.Checked); SPDocumentLibrary doclib = web.Lists["Report Library"] as SPDocumentLibrary; web.AllowUnsafeUpdates = true; SPFile file = doclib.RootFolder.Files.Add(doclib.RootFolder.Url + "/Data Sources/EPMLiveReportDB.rsds", Encoding.ASCII.GetBytes(dataSourceString), new Hashtable { { "Datasource Credentials", String.Format("{0}:{1}", txtReportUsername.Text, hdnReportPassword.Value == "" ? hdnSaveReportPassword.Value : hdnReportPassword.Value) } }, true); web.AllowUnsafeUpdates = false; } else { SSRS2006.ReportingService2006 SSRS = new SSRS2006.ReportingService2006(); SSRS.Url = ssrsurl + "/ReportService2006.asmx"; SSRS.UseDefaultCredentials = true; if (password != "") { SSRS.UseDefaultCredentials = false; if (username.Contains("\\")) { SSRS.Credentials = new System.Net.NetworkCredential(username.Substring(username.IndexOf("\\") + 1), password, username.Substring(0, username.IndexOf("\\"))); } else { SSRS.Credentials = new System.Net.NetworkCredential(username, password); } } /*System.Web.HttpCookie tCookie = System.Web.HttpContext.Current.Response.Cookies["WSS_KeepSessionAuthenticated"]; * * System.Net.Cookie oC = new System.Net.Cookie(); * * // Convert between the System.Net.Cookie to a System.Web.HttpCookie... * oC.Domain = System.Web.HttpContext.Current.Request.Url.Host; * oC.Expires = tCookie.Expires; * oC.Name = tCookie.Name; * oC.Path = tCookie.Path; * oC.Secure = tCookie.Secure; * oC.Value = tCookie.Value; * * SSRS.CookieContainer = new System.Net.CookieContainer(); * * SSRS.CookieContainer.Add(oC); */ try { var authCookie = HttpContext.Current.Request.Cookies["FedAuth"]; var fedAuth = new Cookie(authCookie.Name, authCookie.Value, authCookie.Path, string.IsNullOrEmpty(authCookie.Domain) ? HttpContext.Current.Request.Url.Host : authCookie.Domain); SSRS.CookieContainer = new CookieContainer(); SSRS.CookieContainer.Add(fedAuth); } catch { } SPDocumentLibrary list = (SPDocumentLibrary)web.Lists["Report Library"]; SPListItemCollection folders = list.GetItemsInFolder(list.DefaultView, list.RootFolder); try { foreach (SPListItem li in folders) { if (li.FileSystemObjectType == SPFileSystemObjectType.Folder && li.Name == "Data Sources") { SSRS2006.DataSourceDefinition dsd = new SSRS2006.DataSourceDefinition(); dsd.ConnectString = "Data Source=" + txtReportServer.Text + ";Initial Catalog=" + txtReportDatabase.Text + ";"; dsd.CredentialRetrieval = SSRS2006.CredentialRetrievalEnum.Store; dsd.UserName = txtReportUsername.Text; if (hdnReportPassword.Value == "") { dsd.Password = hdnSaveReportPassword.Value; } else { dsd.Password = hdnReportPassword.Value; } if (chkWindows.Checked) { dsd.WindowsCredentials = chkWindows.Checked; } dsd.Enabled = true; dsd.Extension = "SQL"; SSRS.CreateDataSource("EPMLiveReportDB.rsds", web.Url + "/" + li.Url, true, dsd, null); } } SSRS2006.DataSourceReference dsr = new SSRS2006.DataSourceReference(); dsr.Reference = web.Url + "/Report Library/Data Sources/EPMLiveReportDB.rsds"; foreach (SPListItem li in folders) { processRDL(SSRS, web, li, dsr, list); } } catch { pnlMessage.Visible = true; } } }); }