【问题标题】:Access Reporting Services Export using WebClient when the report has parameters当报表有参数时,使用 WebClient 访问 Reporting Services 导出
【发布时间】:2013-01-16 10:58:38
【问题描述】:

我在尝试使用 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 代码提供英国日期时,我收到错误消息。我不确定为什么使用这两种方法会有所不同,对我来说不再是问题,但仍然有兴趣知道为什么会这样......

【问题讨论】:

    标签: c# asp.net reporting-services webclient


    【解决方案1】:

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

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

    在我的情况下,如果将日期以 mm/dd/yyyy 的美国格式提供,则在将 URL 粘贴到 IE 时会抛出错误

    【讨论】:

    • 如果有人知道如何使这种行为保持一致,请告诉我。我尝试在标题中设置内容,看看是否允许我在 WebClient 调用 URL 中使用英国日期,但没有找到答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多