我正在尝试使用以下网址访问SSRS报告
http://MyServerIP/ReportServer?/FolderName/ReportName&Param1=ParamValue&rs:Command=Render&rs:Format=HTML4.0&rc:Toolbar=false
当我尝试访问上面的Url时,系统会询问我的网络凭据,并在浏览器窗口中显示所有SSRS报告页面。
现在我想在webApp内的弹出窗口中显示这些内容。为此,我尝试发出jquery请求并获取内容,但这样做我得到401未经授权的错误。所以我想知道是否有办法在jquery ajax get request中发送凭证。
作为一个转变,我尝试使用下面的C#代码来检索数据,但它没有帮助,并给出了相同的401错误
WebClient client = new WebClient();
client.Credentials = new NetworkCredential("username", "password", "domain");
divContents.InnerText = client.DownloadString(my report path);
我正在使用SSRS 2008 R2,我的要求是在弹出窗口中显示所有报告页面。所以这方面的所有指针都是受欢迎的。
最后添加一个点,我的网络应用和报告可能会也可能不会驻留在同一个域中。
谢谢, 拉维
答案 0 :(得分: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页面。
答案 1 :(得分: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>
以下代码可用于.aspx
页面的代码隐藏,以在报告查看器中配置报告服务器,用户名和密码,[etc ..]
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";
}
答案 2 :(得分: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