我在尝试使用 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/