在SSRS URL访问上有401个未经授权的错误......但它在Fiddler中有效吗?

时间:2016-02-15 18:30:31

标签: c# .net reporting-services http-status-code-401

我正在尝试使用C#中的URL访问从SSRS报告生成pdf。 (在WebApi控制器后面的业务层中)我创建了一个HttpClient实例,分配了正确的凭据并形成了请求URL,如:

  

http://sqlserver1/ReportServer/Pages/ReportViewer.aspx?/Clients/Acme/AcmeActivitySummary&rs:Command=Render&rs:format=pdf&Region=west&CutOffDate=10/25/2015

如果我将我的URL放在浏览器中,它会下载预期的PDF文件。 当我从HttpClient实例执行此URL以返回流时,我收到401 Unauthorized Error。

如果我打开Fiddler看看为什么......它按预期工作。

如何在不使用Fiddler的情况下完成这项工作......为什么它现在不起作用?

1 个答案:

答案 0 :(得分:2)

在某些地方,微软改变了对SSRS的URL访问的“标准”。网址格式“http://{Server}/ReportServer/Pages/ReportViewer.aspx?/{Path to Report File} & [commands] & [parameters]

已弃用赞成

http://{server}/reportserver?/{path} & [commands] & [parameters].

HOWEVER ...旧的网址格式仍有效“有时”。 SSRS仍将在旧的“端点”接收请求,如果请求可以转发,它将会这样做。因此,来自浏览器(或来自Fiddler)的“正常”请求似乎正常工作。问题在于HttpClient请求,SSRS不会转发到新端点......它只是返回[有点混乱] 401 Unauthorized异常...这显然意味着“我无权转发此请求”而不是“您无权访问此资源“。

(失去了比我更愿意承认这一点的时间......我认为这里的帖子对其他人有帮助。)