Reporting Services身份验证问题

时间:2011-04-18 06:40:15

标签: authentication reporting-services azure

我正在尝试使用Azure Reporting Services以编程方式呈现PDF。我怀疑实际的PDF检索很好,但在请求报告之前我无法找到验证连接的方法(通过URL)。我在我的Web应用程序的服务层工作,我不能使用Web引用(可能无法与Azure一起使用),并且使用ReportViewer控件没有意义(因为它是服务层方法)。

我有连接的所有细节,但我怀疑我需要cookie进行身份验证,我不知道如何手动创建它。任何建议/解决方案?

到目前为止,这是我的代码:

string userName = BJConfigurationManager.GetSetting("ReportingServiceUsername");
string password = BJConfigurationManager.GetSetting("ReportingServicePassword");
NetworkCredential networkCredential = new NetworkCredential(userName, password);
Domain.Report report = GetReportById(id);

int timeout = 30; //seconds
string url = "https://bleh.ctp.reporting.database.windows.net/ReportServer/Pages/ReportViewer.aspx?...";
string destinationFileName = "@C:\\Temp.pdf";

// Create a web request to the URL
HttpWebRequest MyRequest = (HttpWebRequest)WebRequest.Create(url);
MyRequest.PreAuthenticate = true;
MyRequest.Credentials = networkCredential;
MyRequest.Timeout = timeout * 1000;
try
{
    // Get the web response -- THE RESPONSE COMES BACK AS UNAUTHENTICATED...
    HttpWebResponse MyResponse = (HttpWebResponse)MyRequest.GetResponse();

3 个答案:

答案 0 :(得分:1)

查看标题为“SOAP Management Endpoint Programmatic Access”的部分: http://msdn.microsoft.com/en-us/library/windowsazure/771e88b6-ab0f-4910-a5fa-5facd8d56767#SOAPManagement。 它解释了如何使用没有ReportViewer控件的cookie容器进行身份验证。

答案 1 :(得分:0)

我认为这不会起作用。 Azure报告使用表单身份验证,据我所知,您无法将Forms Auth cookie与MachineKey进行匹配以进行加密。

答案 2 :(得分:0)

我试图完成相同的任务......但是使用WebRequest是不可能的。 我使用像这样的ServerReport类改变了方法:

ServerReport report;
report = new ServerReport();
report.ReportServerUrl = new Uri(reportServerName + "/ReportServer");
report.ReportPath = "/ReportPath";
report.ReportServerCredentials = new ReportServerCredentials();
report.SetParameters(new Microsoft.Reporting.WebForms.ReportParameter("param1", param1));
report.SetParameters(new Microsoft.Reporting.WebForms.ReportParameter("param2", param1));
return report.Render(reportParams.OutputFormat);

ReportServerCredentials类必须实现IReportServerCredentials接口,如this

有关IReportServerCredentials界面和实现here的更多信息。