c# - 当报表具有参数时,使用 WebClient 访问 Reporting Services Export

标签 c# asp.net reporting-services webclient

我在尝试使用 WebClient 从 Reporting Services 导出报表时遇到问题。

如果我使用代码加载不包含任何参数的报告,一切正常,一旦我尝试传递参数,就会收到 500 服务器错误。

如果我在 Web 浏览器中点击 Reporting Services URL,报表会正常加载,并且它会采用查询字符串中指定的参数值并以 Excel 格式返返回表。

这是我过去做过的事情,所以真的很困惑问题是什么。下面是我正在使用的一些代码,正如所说,这对于没有参数的报告来说效果很好。无论如何,这都不是最终代码,但我需要先让它使用参数

string url = "http://localhost/Reportserver?/ReportsFolder%2fTheReport&rs:Format=EXCEL&rs:Command=Render&Start=15-01-2013&End=15-01-2013";

WebClient c = new WebClient();
c.UseDefaultCredentials = true;
c.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
byte[] data = c.DownloadData(url);

事实上,在网络浏览器中打开链接时它工作得很好,这让我很困惑,而且这个问题只发生在带有参数的报告中。

更新

我刚刚意识到哪里出了问题,是日期的格式。我输入的是英国格式的日期 dd/mm/yyyy (15-01/2013)

这仍然是一个奇怪的想法,因为在将 URL 粘贴到网络浏览器中时,以英国格式提供它可以正常工作。

使用上面的 WebClient 代码提供英国日期时,出现错误。我不确定为什么使用这两种方法会有所不同,这对我来说不再是问题,但仍然有兴趣知道为什么会这样......

最佳答案

通过 WebClient 发送请求时,请确保日期以 mm/dd/yyyy 的格式发送。

看来,即使英国日期格式 dd/mm/yyyy 在 IE 中有效,但在通过 WebClient 和原始问题中的代码发出请求时却不起作用。

在我的例子中,情况似乎正好相反,将 URL 粘贴到 IE 中时,如果日期以美国格式 mm/dd/yyyy 提供,则会引发错误

关于c# - 当报表具有参数时,使用 WebClient 访问 Reporting Services Export,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14356772/

相关文章:

c# - 在 XNA 中写入 3D 文本

c# - 如何将掩码文本框中的值插入数据库?

c# - 将React+asp.net core部署到IIS

ASP.NET - 在屏幕底部显示应用程序构建日期/信息

C#/报表查看器 : How to use parameters without specifying parameter names

reporting-services - 在 SSRS 多重选择参数中启用仅选择两个值

c# - C# .net 中的 Json 对象

c# - 具有条件 AND、OR 和 NOT 过滤器的 Linq PredicateBuilder

asp.net - 关系从一对多变成多对多需要更新listview

reporting-services - SSRS 2012 - 创建堆叠和集群条形图