2013-04-04 53 views
3

我试图访问像下面如何通过凭据时访问SSRS通过URL

http://MyServerIP/ReportServer?/FolderName/ReportName&Param1=ParamValue&rs:Command=Render&rs:Format=HTML4.0&rc:Toolbar=false 

当我尝试访问上述网址,使用URL中的SSRS报告中汇报,我问我的网络凭据,给予其我获得了在浏览器窗口中呈现的所有SSRS报告页面。

现在我想在我的webApp中的弹出窗口中显示这些内容。为此,我尝试了一个jQuery请求并获取内容,但是这样做会导致401未经授权的错误。所以我想知道是否有一种方法来发送凭据在jquery ajax中获取请求。

作为周转我用下面的C#代码检索数据试过了,但它并没有任何帮助,给了相同的401错误

WebClient client = new WebClient(); 
client.Credentials = new NetworkCredential("username", "password", "domain"); 
divContents.InnerText = client.DownloadString(my report path); 

我使用SSRS 2008 R2,我的要求是显示所有网页弹出窗口中的报告。所以在这个方向上的所有指针都是受欢迎的。

最后添加一个点,我的网络应用程序和报告可能会或可能不会驻留在同一个域中。

感谢, 拉维

+1

是否可以在隐藏的'div'中使用ReportControl,然后将'div'转换为jQuery弹出窗口? –

+1

您是否在您的代码库中引用了ReportExecution2005?您可以将HTML内容推送到您的窗口。 –

+0

@AnnL。是的,我可以使用ReportViewer控制(实际上我也尝试过),但**它不允许我显示所有页面,只显示报告**的第一页,这是我的问题:( – TechnicalSmile

回答

2

我会尝试:

  • 创建一个新的页面。在C#端,使用ReportExecution2005 Web服务将报告呈现为HTML。然后将结果输出到窗口。

  • 在弹出窗口中,通过Ajax调用新的C#页面(获取HTML)并将输出注入到jQuery窗口中,或者将页面本身作为单独的浏览器窗口弹出。

我可以提供一些示例代码,如果你需要它。

ETA:我找到的信息可能是有价值的一块:

这是从HTML Device Settings page(重点煤矿):

工具栏

指示是显示或隐藏工具栏。 此 参数的默认值为true。如果此参数的值为false,则会忽略所有其余选项(文档映射除外)。如果您省略了 此参数,则会自动显示工具栏以呈现支持该格式的 格式。

当您使用URL访问 呈现报表时,报表查看器工具栏会呈现。工具栏不是通过SOAP API呈现的。 但是,工具栏设备信息设置会影响使用SOAP Render方法时显示报告的方式。 如果在使用SOAP呈现为HTML时,此参数的 值为true,则仅显示报表的第一部分 。如果值为 false,则整个HTML报告将呈现为单个HTML页面

+0

谢谢安,这是一种方式,但这里的问题是呈现一次只给出一个页面,我需要显示整个报告。任何想法,如果它可能与此方法? MSDN文档建议“后续调用渲染可以用于获取额外页面的报告,如果渲染扩展支持指定多个页面。“,我想查看这个 – TechnicalSmile

+0

将它作为PDF可以接受吗?报告执行服务Render方法将在一次调用中返回整个PDF –

+0

这是我已经提出给别人的最后一招,它可以显示在一个模式弹出窗口中,我的意思是用户点击了一个链接,发生了一个回传,使用R创建了pdf eportExecution2005和那个pdf显示在一些模式弹出。我不确定最后一步“pdf在模态弹出窗口中显示”。有什么想法吗? – TechnicalSmile

1

如果您希望公开访问安全报告而不要求凭据,则可以使用Report Viewer控件。

  1. 创建一个新的.aspx页面,并使用ReportViewer控制像这样:

    <rsweb:ReportViewer ID="MainReportViewer" runat="server" BackColor="White" 
        Font-Names="Verdana" Font-Size="8pt" InteractiveDeviceInfos=" (Collection)" 
        ProcessingMode="Remote" ShowBackButton="False" ShowFindControls="False" 
        ShowPageNavigationControls="False" SizeToReportContent="True" 
        ToolBarItemBorderColor="White" ToolBarItemHoverBackColor="White" 
        WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" Width="100%"> 
         <ServerReport ReportServerUrl="" /> 
    </rsweb:ReportViewer> 
    
  2. 下面可以在.aspx页面的代码隐藏使用的代码来配置报表服务器,用户名和密码[等]在您的报表查看器

    protected void Page_Init(Object sender, EventArgs e) 
    { 
        string UserName = ConfigurationManager.AppSettings["SsrsUserName"]; 
        string Password = ConfigurationManager.AppSettings["SsrsPassword"]; 
        string Domain = ConfigurationManager.AppSettings["SsrsDomain"]; 
        string ReportServerRoot = ConfigurationManager.AppSettings["SsrsServerRoot"]; 
        string ReportServerPath = ConfigurationManager.AppSettings["SsrsReportServerPath"]; 
        MainReportViewer.ProcessingMode = ProcessingMode.Remote; 
        IReportServerCredentials irsc = new CustomReportCredentials(UserName, Password, Domain); 
        MainReportViewer.ServerReport.ReportServerCredentials = irsc; 
        MainReportViewer.ServerReport.ReportServerUrl = new Uri(ReportServerRoot); 
        MainReportViewer.ServerReport.ReportPath = ReportServerPath + "YourReportFileName"; 
    } 
    
1

您凭据传递这样的查询字符串:

DSU:的datasourcename = 的userName & DSP:的datasourcename = 密码

在更换元件大胆与报告中的值一起,例如:

http://MyServerIP/ReportServer?/FolderName/ReportName&Param1=ParamValue&rs:Command=Render&rs:Format=HTML4.0&rc:Toolbar=false&dsu:Data=reportreader&dsp:Data=password1 
+0

这是真的吗?对我来说,它仍然要求提供认证。如果有任何解决方案或其他需要与此设置一起传递的请帮助吗? – Snehal