我需要一些帮助。
实际上,我已经阅读过这个问题,并且我认为我已经解决了它,但它一直困扰着我。
这是关于开发和生产环境中的不同登录。
这应该是解决方案(EF 和 SQL Server):
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder((model.Connection as EntityConnection).StoreConnection.ConnectionString);
ConnectionInfo ci = new ConnectionInfo();
ci.ServerName = builder.DataSource;
ci.DatabaseName = builder.InitialCatalog;
ci.UserID = builder.UserID;
ci.Password = builder.Password;
report.SetDatabaseLogon(ci.UserID, ci.Password, builder.DataSource, ci.DatabaseName);
foreach (CrystalDecisions.CrystalReports.Engine.Table tbl in report.Database.Tables)
{
TableLogOnInfo logon = tbl.LogOnInfo;
logon.ConnectionInfo = ci;
tbl.ApplyLogOnInfo(logon);
}
我从实体连接中提取登录信息并将其应用于报告中的所有表。这应该够了吧。我添加了 SetDatabaseLogon() 只是为了确定,但这不是必需的。
现在,当我在生产环境中运行报告时,报告会弹出一个数据库登录屏幕,显示正确的服务器名称(生产服务器),数据库旁边没有任何内容(这是我关心的),正确的用户名,没有密码,要求输入登录信息.
我输入它,但 CR 说“登录失败。请重试”。我的意思是WTF。我使用相同的凭据通过 Management Studio 连接到数据库。
我正在使用 WPF 查看器,顺便说一句。
我真的卡在这里了,我做了一些调试,连接信息得到了所有正确的数据,所以一定要报告谁是罪魁祸首,但我该怎么办?
任何帮助,将不胜感激。我希望有人在我之前遇到过同样的问题。
问候