Не удалось загрузить соединение crystalreport13 из IIS
я попытался загрузить crystal report на windows server 2012 R2 из IIS и получил сообщение об ошибке
Не удалось открыть соединение. MA723DT 2608_14160_{B2777DB7-D4BD-4E31-8748-7E70DE55C132}.rpt
но он работает на той же машине из visual studio при отладке приложения
Что я уже пробовал:
private void GetReport(string EmpID, string StartDate, string EndDate, string Conn, string Cmpid) { try { TableLogOnInfos TableLogOnInfos = new TableLogOnInfos(); TableLogOnInfo TableLogOnInfo = new TableLogOnInfo(); ConnectionInfo ConnectionInfo = new ConnectionInfo(); SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); Tables Tables; ReportDocument report = new ReportDocument(); string FileName = "~/MA723BA.rpt"; report.Load(Server.MapPath(FileName)); if (Conn != "") { string ConnString = ConfigurationManager.ConnectionStrings[Conn].ConnectionString; if (ConnString.ToLower().StartsWith("metadata=")) { System.Data.Entity.Core.EntityClient.EntityConnectionStringBuilder efBuilder = new System.Data.Entity.Core.EntityClient.EntityConnectionStringBuilder(ConnString); ConnString = efBuilder.ProviderConnectionString; builder.ConnectionString = ConnString; ConnectionInfo.ServerName = builder.DataSource; ConnectionInfo.DatabaseName = builder.InitialCatalog; ConnectionInfo.UserID = builder.UserID; ConnectionInfo.Password = builder.Password; Tables = report.Database.Tables; foreach (CrystalDecisions.CrystalReports.Engine.Table table in Tables) { TableLogOnInfo = table.LogOnInfo; TableLogOnInfo.ConnectionInfo = ConnectionInfo; table.ApplyLogOnInfo(TableLogOnInfo); } } } ParameterRangeValue myParameterRangeValue = new ParameterRangeValue(); myParameterRangeValue.StartValue = StartDate; myParameterRangeValue.EndValue = EndDate; report.SetParameterValue(0, EmpID); report.SetParameterValue(1, myParameterRangeValue); CrystalReportViewer1.ReportSource = report; CrystalReportViewer1.DataBind(); } catch(Exception er) { throw new Exception(er.ToString()); } }
Richard Deeming
catch(Exception er) { throw new Exception(er.ToString()); }
Серьезно, не делай этого.
Вы просто отбросили любой шанс для вызывающего кода поймать исключение, которое он знает, как обрабатывать. И вы уничтожили любую информацию в исключении, которая не включена в его строковое представление.
Если вам действительно нужно поймать и перестроить исключение, просто используйте:
catch (Exception ex) { throw; }
Но поскольку вы ничего не делаете с этим исключением, вы можете просто удалить его.
try..catch
блокируйте и позволяйте исключениям распространяться нормально.
$ultaNn
попробуйте поймать удалено