我似乎无法使用HttpClient发送报告服务器的请求,因为结果总是如此
401(未经授权).
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
解决方法
我使用Fiddler来查看使用浏览器登录时发生了什么
Auth选项卡是
WWW-Authenticate Header is present: Negotiate WWW-Authenticate Header is present: NTLM
所以,即使我被告知身份验证是基本的,我需要使用以下内容
CredentialCache credentialCache = new CredentialCache(); credentialCache.Add(new Uri("http://youruri"),"NTLM",new NetworkCredential(username,password)); using (var handler = new HttpClientHandler { Credentials = credentialCache })
HttpClient的其余代码是相同的.
额外:
Authentication with the Report Server
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。