2

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

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

更新

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

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

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

4

1 回答 1

2

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

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

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

于 2013-01-16T11:49:52.103 回答