使用VB.net如何将凭据传递到ssrs报表服务器?

时间:2019-05-08 16:03:03

标签: vb.net ssrs-2008-r2 credentials

我正在尝试将凭据传递到ssrs服务器以将报告加载为PDF,但是却收到401未经授权的错误。

我有一个正在处理的vb.net Web窗体项目,它正在尝试在远程SQL Server 2008 r2计算机上加载报告。我正在尝试加载报告,并以pdf格式下载。我的代码应该将文件作为数据流加载,从而允许用户保存文件。将浏览器直接指向报表的URL,我可以获取PDF,但需要提供凭据。我试图避免需要登录才能获取报告。我使用的代码应该传递凭据,但是我没有返回报告,而是得到401未经授权的错误。

Dim ReportUrl As String = "http://server/ReportServer/Pages/ReportViewer.aspx?%2fReport%2fParishreport&rs:Command=Render&parameter=" & session("parameter") & "&rs:format=pdf"
Dim ReportWebResponse As HttpWebResponse
         Dim Request As HttpWebRequest = CType(WebRequest.Create(ReportUrl), HttpWebRequest)
         'Request.Credentials = CredentialCache.DefaultCredentials
         Request.Credentials = New NetworkCredential("user", "password")
         ReportWebResponse = CType(Request.GetResponse(), HttpWebResponse)
         Dim ReportResponseStream As StreamReader = New StreamReader(ReportWebResponse.GetResponseStream(), New UnicodeEncoding)
         Dim objMemoryStream As New MemoryStream(New UnicodeEncoding().GetBytes(ReportResponseStream.ReadToEnd()))
         Response.Clear()
         Response.AddHeader("Accept-Header", objMemoryStream.Length.ToString())
         Response.ContentType = "application/pdf"
         Response.OutputStream.Write(objMemoryStream.ToArray(), 0, Convert.ToInt32(objMemoryStream.Length))
         ReportResponseStream.Close()
         Response.Flush()

         Try
             Response.End()
         Catch
         End Try

我希望浏览器允许我保存PDF或在浏览器(内置于PDF查看器中的Firefox)中显示pdf。使用指定的用户名和密码,我得到401未经授权的错误。使用defaultcredentials,我得到正确页数的空白PDF。

我已将域帐户添加到报表服务器:1.使用SQL Server Management Studio。2.使用报表服务器Web界面添加文件夹和报表权限。

向凭据服务器提供凭据以便可以使用单个域帐户控制用户查看报表的能力的首选方法是什么?

0 个答案:

没有答案