C# Net核心:在客户端浏览器上下载PDF格式的SSRS报告

C# Net核心:在客户端浏览器上下载PDF格式的SSRS报告,c#,asp.net-core,reporting-services,C#,Asp.net Core,Reporting Services,我有一个SSRS报告URL,如果我在浏览器中输入该URL,它将显示带有打印和保存选项的SSRS报告,如: 在浏览器上运行良好 我想要的是,.cshtml页面上有一个按钮,因此单击该按钮,我需要在客户端浏览器上下载报告 网址: 我尝试的是: 通过设置&rs:Format=PDF并从Asp.Net核心应用程序发出HTTP请求,但生成的PDF格式已损坏 代码: 如何在Asp.NETCore中实现这一点 编辑:: 我有我报告的asmx url: http://server-name/ReportSer

我有一个SSRS报告URL,如果我在浏览器中输入该URL,它将显示带有打印和保存选项的SSRS报告,如:

在浏览器上运行良好

我想要的是,
.cshtml
页面上有一个按钮,因此单击该按钮,我需要在客户端浏览器上下载报告

网址:

我尝试的是:

通过设置
&rs:Format=PDF
并从Asp.Net核心应用程序发出HTTP请求,但生成的PDF格式已损坏

代码:

如何在Asp.NETCore中实现这一点

编辑:

我有我报告的asmx url:

http://server-name/ReportServer/reportexecution2005.asmx

但是无法继续进行此操作,是否有人可以向我介绍文档?

您最好使用支持的ReportExecution2005.asmx端点和类似WCF的东西来完成此操作,而不是尝试使用HTTP web请求在浏览器中模拟用户交互


设置完成后,报表执行实例上会有一些呈现方法,可以很容易地将报表获取为PDF格式。

如果您想要一个简单的URL来下载PDF格式的报表,请不要将参数添加到web门户URL,而是将其添加到指向web服务的URL:

string URL = "http://xyz/reportserver/?/UAT/SampleReport_V1";
string Command = "Render";
string Format = "PDF";
URL = URL + "&SrNo=X123&rs:Command=" + Command + "&rs:Format=" + Format;

您正在使用默认的代码转换器转换为
pdf
。我们不使用此方法将报表转换为
pdf
。如果你想问更多的选择,这是漫长的,但不难做到。您可以使用方法将html转换为
pdf
。它很容易使用。我并不是说你使用的方法是错误的。但我们需要使用最新的技术
Asp.netcore
使用
wkhtmltopdf
可以将html页面转换为pdf。

它以何种方式损坏?@mjwills its say无法加载文件。我尝试的方式不正确,我想是的……我得到了asmx URL。但无法继续。它会在核心中工作吗?或者你可以引导我走向文档?我会非常感激的!是的,尝试使用asmx URL,但有一些方法changed@PrashantPimpale:它不是相同的代码。我将
ReportS/report
替换为
reportserver
,这是web服务的默认名称。另外,我在这里插入了问号,因为报告的路径应该是web服务URL的第一个参数。最后,我用一个符号(
&
)替换了您的问号(在要替换的代码段的最后一行)。当你用我的4行替换你的4行时,会出现什么结果?@PrashantPimpale:完整的URL应该如下所示:
http://xyz/reportserver/?/UAT/SampleReport_V1&SrNo=X123&rs:Command=Render&rs:Format=PDF
,要进行测试,请将其粘贴到浏览器中。是的,它将生成预期的PDF!为什么我们要使用
+正如Nick提到的,当我在另一台PC上尝试该URL时(谁没有访问SSRS报告的权限来查看),会出现错误,我如何传递一些默认凭据?@prashantpimple the
是web服务URL和请求的所有“参数”之间的分隔符。至于凭证:您正在传递“DefaultCredentials”。如果这些不足以访问报告,并且您希望绕过授予用户的权限,只需使用允许访问报告的凭据填充
Req.Credentials
string URL = "http://xyz/reportserver/?/UAT/SampleReport_V1";
string Command = "Render";
string Format = "PDF";
URL = URL + "&SrNo=X123&rs:Command=" + Command + "&rs:Format=" + Format;