You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RDL Report无法渲染生成报错,请问rdl文件的连接在哪里设置?

问题原因

当前报错的核心是你创建LocalReport实例后,既没有为RDL文件中定义的DataSet1配置数据源,也没有覆盖RDL内置的数据库连接配置,RDL默认尝试调用内置连接字符串访问数据库时,获取到了空的身份凭证,因此触发登录失败错误。

解决方案

方案1:代码中直接传入DataSet1对应的数据(推荐)

不需要让RDL自动查询数据库,直接在业务代码中查询好对应数据,赋值给对应数据集即可,修改后的代码示例如下:

const int extension = 1;
var path = Path.Combine(_webHostEnvironment.WebRootPath, "Reports", "test.rdl");
var parameters = new Dictionary<string, string> { { "rp1", "Test Value to parameter" } };
var localReport = new LocalReport(path);

// 新增:查询DataSet1需要的业务数据,替换为你自己的查询逻辑
var dataSet1Data = _dbContext.你的业务表.Where(x => x.过滤条件).ToList();
// 给LocalReport绑定数据集,注意第一个参数名称必须和RDL里定义的数据集名称完全一致,这里是DataSet1
localReport.AddDataSource("DataSet1", dataSet1Data);

var result = localReport.Execute(RenderType.Pdf, extension, parameters);
return File(result.MainStream, "application/pdf");

注意:AddDataSource的第一个参数必须和RDL文件中定义的数据集名称完全匹配,大小写也要统一,否则会出现识别不到数据集的问题。

方案2:覆盖RDL内置的数据库连接配置

如果你需要让RDL自行执行查询拉取数据,可以在初始化LocalReport后,手动设置连接字符串覆盖RDL的内置配置:

// 初始化LocalReport后添加如下代码
localReport.DataSourcesConnections.Add(new DataSourceConnection
{
    Name = "RDL中定义的数据源名称",
    ConnectionString = "你的完整数据库连接字符串"
});

你也可以直接编辑RDL文件修改内置连接:用报表设计器打开rdl文件,找到「数据源」选项,双击对应的数据源,在连接配置页修改连接字符串和身份验证信息即可。

注意事项
  • 如果你使用的是AspNetCore.Reporting低版本包,AddDataSource方法的参数顺序或重载可能存在差异,只要保证数据集名称匹配即可
  • 空用户登录失败的问题,绝大多数场景都是没有手动传入数据源,RDL读取内置连接时未拿到身份凭证导致,优先使用方案1处理,可控性更高

内容的提问来源于stack exchange,提问作者Clefor7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 00:54:00