【发布时间】:2013-12-12 13:25:22
【问题描述】:
我似乎无法使用 HttpClient 向报表服务器发送请求,因为结果总是 401(未经授权)。
动作是
public async Task<FileStreamResult> SSRSTest()
{
//set credentials
using (var handler = new HttpClientHandler {
Credentials = new NetworkCredential("userName", "password"),
UseDefaultCredentials = false
})
using (var httpClient = new HttpClient(handler))
{
//get *.pdf from report server
var response = await httpClient .GetStreamAsync("http://someip/ReportServer/Pages/ReportViewer.aspx?TheRemainingPartOfURL");
var contentDisposition = new ContentDisposition
{
FileName = "SomeReport.pdf",
Inline = false
};
//set content disposition
Response.AppendHeader("Content-Disposition", contentDisposition.ToString());
//return the file
return File(response, "application/pdf");
}
}
补充:
Pass a Report Parameter Within a URL
【问题讨论】:
-
用户是否有权访问报告服务?
-
@scheien 是的,当我将 URL 粘贴到浏览器地址栏中或将链接用作 href 时,它可以工作。
-
不应该有一个域名作为你的 NetworkCredential 构造函数的第三个参数吗?
-
@jbl 它有几个重载,所以我认为这不是问题。
-
我知道 ;-) 关键是也许你应该在这个参数中放一些东西(比如域名,或者机器名)
标签: c# asp.net asp.net-mvc reporting-services