如何在 asp.net 应用程序中本地使用 s-s-rS
Posted
技术标签:
【中文标题】如何在 asp.net 应用程序中本地使用 s-s-rS【英文标题】:How to consume s-s-rS locally in asp.net application 【发布时间】:2017-08-01 17:13:36 【问题描述】:我浏览了很多链接,但现在我需要可以更好地帮助我的人。我既没有托管经验,也没有 s-s-rS 经验。
在几个站点之后,我在我已经存在的 Asp.net MVC 应用程序中添加了来自 Visual Studio 的商业智能->“报告项目”。然后我成功地创建了两个我可以很好预览的 rdl 报告。现在的问题是在 asp.net 应用程序中使用它们?
我做的步骤是:
1) 打开 IIS 并创建一个新网站,其物理目录为“我的路径” s-s-rS 项目”。如果我从以下位置浏览此网站,我现在可以看到该位置 IIS。
2) 现在来到 asp.net 代码。我已经添加了查看报告所需的基本代码,但问题是“路径”。我是否必须定义“本地服务器路径”或“远程”。两者有什么区别。他们是否需要该 rdl 文件的物理位置。如果它需要物理位置,那么我怎么能得到它,因为 rdl 文件位于不同的项目中并且它不存在于我的主 webapp 中。我对此感到困惑。如果我尝试提供我的应用程序路径,有时我会出错。对于下面的代码,它向我显示了这个错误。
无法解析远程名称:'reportserver'
这是项目结构:
这就是我在控制器中所拥有的
ReportViewer reportViewer = new ReportViewer
ProcessingMode = ProcessingMode.Remote
;
//reportViewer.LocalReport.ReportPath =
// Request.MapPath(Request.ApplicationPath) +
// "~/Reports/Report3.rdl";
//reportViewer.LocalReport.ReportPath = Path.GetFullPath("~/ReportingProject/Reports/Report3.rdl");
//reportViewer.LocalReport.ReportPath = Path.Combine("~/ReportingProject/Reports/Report3.rdl");
reportViewer.ServerReport.ReportServerUrl = new Uri("http://ReportServer/Reports/report3.rdl");
//string solutiondir = Directory.GetParent(
// Directory.GetCurrentDirectory()).Parent.FullName;
//// may need to go one directory higher for solution directory
//return XDocument.Load(solutiondir + "\\" + ProjectBName + "\\Mock\\myDoc.html")
reportViewer.Width = Unit.Percentage(100);
reportViewer.LocalReport.DataSources.Add(new
ReportDataSource("DataSet1", objList));
reportViewer.LocalReport.Refresh();
ViewBag.ReportViewer = reportViewer;
【问题讨论】:
您需要使用ReportServer URL
,而不是Reports URL
。 http://servername/ReportServer/report3.rdl
如果报表管理器中没有 rdl 扩展名,那么 URL 字符串中就不需要它。
即使这样做了也不会起作用。 reportViewer.ServerReport.ReportServerUrl = new Uri("localhost/reportserver/report3.rdl"); 尝试连接到报表服务器失败。检查您的连接信息,并确保报表服务器是兼容版本。客户端发现响应内容类型为 '',但应为预期'text/xml'。请求失败,响应为空。
【参考方案1】:
也许您应该使用 SOAP 报告服务(请参阅 https://technet.microsoft.com/en-us/library/reportservice2010.reportingservice2010.aspx)使用 ListChildren() 方法和父文件夹 (https://technet.microsoft.com/en-us/library/reportservice2010.reportingservice2010.listchildren.aspx) 的路径来获取您想要的报告。
【讨论】:
以上是关于如何在 asp.net 应用程序中本地使用 s-s-rS的主要内容,如果未能解决你的问题,请参考以下文章
调试 ASP.NET 应用程序时如何在 Fiddler 中显示本地主机流量?
如何在本地 IIS 而非 Express 中调试 ASP.NET 5 Web 应用程序
如何使 ASP.NET Web API Web 服务在本地网络中可用