微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 在ASP.NET MVC Action中使用HttpClient来调用SSRS

我似乎无法使用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

Export a Report Using URL Access

Export Formats

Generate Data Feeds from a Report

解决方法

我使用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

Selecting a Credential Type

Understanding SQL Server Reporting Services Authentication

Configure Basic Authentication on the Report Server

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐