public ReportViewerParameters Parse(NameValueCollection queryString) { if (queryString == null) { throw new ArgumentNullException("queryString"); } var isEncrypted = CheckEncryption(ref queryString); var settinsManager = new ControlSettingsManager(isEncrypted); var parameters = InitializeDefaults(); ResetDefaultCredentials(queryString, parameters); parameters.ControlSettings = settinsManager.Deserialize(queryString); foreach (var key in queryString.AllKeys) { var urlParam = queryString[key]; if (key.EqualsIgnoreCase(UriParameters.ReportPath)) { parameters.ReportPath = isEncrypted ? SecurityUtil.Decrypt(urlParam) : urlParam; } else if (key.EqualsIgnoreCase(UriParameters.ControlId)) { var parameter = isEncrypted ? SecurityUtil.Decrypt(urlParam) : urlParam; parameters.ControlId = Guid.Parse(parameter); } else if (key.EqualsIgnoreCase(UriParameters.ProcessingMode)) { var parameter = isEncrypted ? SecurityUtil.Decrypt(urlParam) : urlParam; parameters.ProcessingMode = (ProcessingMode)Enum.Parse(typeof(ProcessingMode), parameter); } else if (key.EqualsIgnoreCase(UriParameters.ReportServerUrl)) { parameters.ReportServerUrl = isEncrypted ? SecurityUtil.Decrypt(urlParam) : urlParam; } else if (key.EqualsIgnoreCase(UriParameters.Username)) { parameters.Username = isEncrypted ? SecurityUtil.Decrypt(urlParam) : urlParam; } else if (key.EqualsIgnoreCase(UriParameters.Password)) { parameters.Password = isEncrypted ? SecurityUtil.Decrypt(urlParam) : urlParam; } else if (!settinsManager.IsControlSetting(key)) { var values = queryString.GetValues(key); if (values != null) { foreach (var value in values) { var realValue = isEncrypted ? SecurityUtil.Decrypt(value) : value; var parsedKey = ParseKey(key); var realKey = parsedKey.Item1; var isVisible = parsedKey.Item2; if (parameters.ReportParameters.ContainsKey(realKey)) { parameters.ReportParameters[realKey].Values.Add(realValue); } else { var reportParameter = new ReportParameter(realKey); reportParameter.Visible = isVisible; reportParameter.Values.Add(realValue); parameters.ReportParameters.Add(realKey, reportParameter); } } } } } if (parameters.ProcessingMode == ProcessingMode.Remote && string.IsNullOrEmpty(parameters.ReportServerUrl)) { throw new MvcReportViewerException("Report Server is not specified."); } if (string.IsNullOrEmpty(parameters.ReportPath)) { throw new MvcReportViewerException("Report is not specified."); } return(parameters); }
public ReportViewerParameters Parse(NameValueCollection queryString) { if (queryString == null) { throw new ArgumentNullException("queryString"); } var isEncrypted = CheckEncryption(ref queryString); var settinsManager = new ControlSettingsManager(isEncrypted); var parameters = InitializeDefaults(); ResetDefaultCredentials(queryString, parameters); parameters.ControlSettings = settinsManager.Deserialize(queryString); foreach (var key in queryString.AllKeys) { var urlParam = queryString[key]; if (key.EqualsIgnoreCase(UriParameters.ReportPath)) { parameters.ReportPath = isEncrypted ? SecurityUtil.Decrypt(urlParam) : urlParam; } else if (key.EqualsIgnoreCase(UriParameters.ReportServerUrl)) { parameters.ReportServerUrl = isEncrypted ? SecurityUtil.Decrypt(urlParam) : urlParam; } else if (key.EqualsIgnoreCase(UriParameters.Username)) { parameters.Username = isEncrypted ? SecurityUtil.Decrypt(urlParam) : urlParam; } else if (key.EqualsIgnoreCase(UriParameters.Password)) { parameters.Password = isEncrypted ? SecurityUtil.Decrypt(urlParam) : urlParam; } else if (key.EqualsIgnoreCase(UriParameters.Local)) { var isLocalStringValue = isEncrypted ? SecurityUtil.Decrypt(urlParam) : urlParam; bool isLocalValue; if (Boolean.TryParse(isLocalStringValue, out isLocalValue)) { parameters.IsLocal = isLocalValue; } } else if (!settinsManager.IsControlSetting(key)) { var values = queryString.GetValues(key); if (values != null) { foreach (var value in values) { var realValue = isEncrypted ? SecurityUtil.Decrypt(value) : value; if (parameters.ReportParameters.ContainsKey(key)) { parameters.ReportParameters[key].Values.Add(realValue); } else { var reportParameter = new ReportParameter(key); reportParameter.Values.Add(realValue); parameters.ReportParameters.Add(key, reportParameter); } } } } } if (string.IsNullOrEmpty(parameters.ReportServerUrl)) { throw new MvcReportViewerException("Report Server is not specified."); } if (string.IsNullOrEmpty(parameters.ReportPath)) { throw new MvcReportViewerException("Report is not specified."); } return(parameters); }
private string PrepareViewerUri() { var query = HttpUtility.ParseQueryString(string.Empty); query[UriParameters.ControlId] = ControlId.ToString(); query[UriParameters.ProcessingMode] = _processingMode.ToString(); if (!string.IsNullOrEmpty(_reportPath)) { query[UriParameters.ReportPath] = _reportPath; } if (!string.IsNullOrEmpty(_reportServerUrl)) { query[UriParameters.ReportServerUrl] = _reportServerUrl; } if (!string.IsNullOrEmpty(_username) || !string.IsNullOrEmpty(_password)) { query[UriParameters.Username] = _username; query[UriParameters.Password] = _password; } if (!string.IsNullOrEmpty(_eventsHandlerType)) { query[UriParameters.EventsHandlerType] = _eventsHandlerType; } if (_dataSourceCredentials?.Length > 0) { query[UriParameters.DataSourceCredentials] = JsonConvert.SerializeObject(_dataSourceCredentials); } var frameHeight = GetFrameHeight(); if (frameHeight != null) { if (_controlSettings == null) { _controlSettings = new ControlSettings(); } _controlSettings.FrameHeight = new Unit(frameHeight.Item1, frameHeight.Item2); } var serializedSettings = _settingsManager.Serialize(_controlSettings); foreach (var setting in serializedSettings) { query[setting.Key] = setting.Value; } if (_reportParameters != null) { foreach (var parameter in _reportParameters) { if (parameter.Value == null) { continue; } var multiple = parameter.Value as IEnumerable; if (parameter.Value is string || multiple == null) { var value = ConvertValueToString(parameter.Value); query.Add(parameter.Key, value); } else { foreach (var v in multiple) { var value = ConvertValueToString(v); query.Add(parameter.Key, value); } } } } string uri = _aspxViewer; if (query.Count == 0) { return(uri); } if (!_encryptParameters) { return(uri + "?" + query); } var encryptedQuery = UriParameters.Encrypted + "=" + SecurityUtil.Encrypt(query.ToString()); return(uri + "?" + encryptedQuery); }
private string PrepareViewerUri() { var query = HttpUtility.ParseQueryString(string.Empty); query[UriParameters.ControlId] = ControlId.ToString(); query[UriParameters.ProcessingMode] = _processingMode.ToString(); if (!string.IsNullOrEmpty(_reportPath)) { query[UriParameters.ReportPath] = _reportPath; } if (!string.IsNullOrEmpty(_reportServerUrl)) { query[UriParameters.ReportServerUrl] = _reportServerUrl; } if (!string.IsNullOrEmpty(_username) || !string.IsNullOrEmpty(_password)) { query[UriParameters.Username] = _username; query[UriParameters.Password] = _password; } var serializedSettings = _settingsManager.Serialize(_controlSettings); foreach (var setting in serializedSettings) { query[setting.Key] = setting.Value; } if (_reportParameters != null) { foreach (var parameter in _reportParameters) { if (parameter.Value == null) { continue; } var multiple = parameter.Value as IEnumerable; if (parameter.Value is string || multiple == null) { var value = ConvertValueToString(parameter.Value); query.Add(parameter.Key, value); } else { foreach (var v in multiple) { var value = ConvertValueToString(v); query.Add(parameter.Key, value); } } } } string uri = _aspxViewer; if (query.Count == 0) { return(uri); } if (!_encryptParameters) { return(uri + "?" + query); } var encryptedQuery = UriParameters.Encrypted + "=" + SecurityUtil.Encrypt(query.ToString()); return(uri + "?" + encryptedQuery); }