如何在 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 URLhttp://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 表单项目?

如何使 ASP.NET Web API Web 服务在本地网络中可用

如何在本地服务结构集群中部署和访问来宾可执行文件(ASP.NET OWIN 自托管 webapi 应用程序)

如何在 ASP.NET Core 项目中读取本地文件?