Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSR;ASP.NET-创建带有登录系统的站点,其中将显示报告_Asp.net_Reporting Services_Windows Authentication_Reportmanager_Login System - Fatal编程技术网

SSR;ASP.NET-创建带有登录系统的站点,其中将显示报告

SSR;ASP.NET-创建带有登录系统的站点,其中将显示报告,asp.net,reporting-services,windows-authentication,reportmanager,login-system,Asp.net,Reporting Services,Windows Authentication,Reportmanager,Login System,我想有在ASP.NET的网站将是简单的登录系统。登录后,还将链接到SSRS中的报告。但每个用户都会有不同的链接,他可以看到。 我想通过Windows身份验证检查的缺口和密码。 1我想知道是否有可能将这些信息保存在数据库之外的其他地方? 2如何获得与报表管理器中类似的布局?我的意思是,如何使用ASP.NET显示我的报告 我是ASP.NET的新手,我不知道是否有可能做这样的事情,所以我希望我能做到​​我清楚了 提前感谢,, Monic问题1:你在谈论什么样的信息,给出一个编码示例或基于你的结构的东西

我想有在ASP.NET的网站将是简单的登录系统。登录后,还将链接到SSRS中的报告。但每个用户都会有不同的链接,他可以看到。 我想通过Windows身份验证检查的缺口和密码。 1我想知道是否有可能将这些信息保存在数据库之外的其他地方? 2如何获得与报表管理器中类似的布局?我的意思是,如何使用ASP.NET显示我的报告

我是ASP.NET的新手,我不知道是否有可能做这样的事情,所以我希望我能做到​​我清楚了

提前感谢,,
Monic

问题1:你在谈论什么样的信息,给出一个编码示例或基于你的结构的东西,社区可以在其中工作

编辑:是的,可以将报告放在单独的地方。此外,这意味着对于每个用户,您必须在SSRS下创建权限,然后在页面中引用用户对SSRS的身份验证。从那时起,您就可以使用SSRS功能。这意味着管理员需要在每个新用户身边插入用户可能看到的报告。这是一种不方便的方法,因为只提供SSRS地址更容易,所以所有用户都从那里开始工作。然而,你对页面的外观没有什么可说的

问题2:ASP.net有一个reportviewer控件,使您能够查看reportserver上可用的特定报告。SSRS reportviewer的大部分功能都可以在此控件中模拟。请注意,在使用控件时,您需要非常好地理解它

作为旁注:

我曾经创建过一个网站,该网站的用户有权访问不同的报告,根据他们的用户ID使用不同的参数。我有一个由内部SSO和外部用户组成的用户表。也有不同的角色。在此基础上,赋予了不同的权利

reportviewer的链接使用了一个普通的reportuser,而不是用户自己的身份验证,然后用户ID作为一个额外的参数提供,其他参数基于此

编辑:

如果希望某些用户能够访问报表,请创建3个表:User、report和UserReportLink

例如:

Userid | Name
1      | user A
2      | user B
3      | user C

Reportid | Name     |ReportLink
1        | report A | 'http://MyReportServer/reports/Report1.aspx'
2        | report B | 'http://MyReportServer/reports/Report2.aspx'
3        | report C | 'http://MyReportServer/reports/Report3.aspx'
4        | report D | 'http://MyReportServer/reports/Report4.aspx'

Userreportid | Userid | Reportid
1            | 1      | 1    
2            | 1      | 2
3            | 2      | 1    
4            | 2      | 2
5            | 2      | 3    
6            | 3      | 2
7            | 3      | 3    
8            | 3      | 4
然后,您的页面将由以下报告逻辑组成:

=>返回登录会话的用户,可能是因为它是asp.net

=>返回用户需要查看的所有报告的列表

var q = (from m in UserReportLinks
         where m.Userid = this.UserId
         select m).ToList();
=>通过以上内容,您可以为用户提供报告

var l = new List<Report>();
foreach(var item in q)
{
 var r = (from m in Reports
          where m.Reportid = item.Reportid
          return m).ToList();
 l.Add(r);
}
//populate a control so the user can select a report
aControl.DataSource = l;
=>最后,使用selectedId,将报告返回到reportviewer中


=>选择参数等。

如果可以,请全部选择。但是,您不使用已经具有这些功能的实际SSRS服务器有什么原因吗?您指的是什么功能?我希望具有与报表管理器不同的布局。例如,在站点顶部将显示有关已登录用户的信息,在此下方将显示主报告以及与该用户关联的其他报告的链接。也许您应该尝试使用reportviewer。我已经可以告诉你,ssrs上的每一个可能的函数都可以用c来实现,缩小规模是因为它会变得非常复杂。1我说的是:但是每个用户都有不同的链接,他可以看到。一个用户可以看到报表A、B和另一个报表B、C。因此,第一个用户将有指向报表A、B的链接,通过类推,第二个用户将看到指向报表B、C的链接。我还没有任何编码的例子,因为现在我只有这样一个想法,它会是什么样子。很抱歉我没有回复-我正忙于另一个项目。我还有另一个问题-据我所知,这些var q和l我应该在VS的控制器中使用,对吗?您能告诉我,根据登录的用户,我可以在哪里或如何更改所需的参数吗?此评论陈述了另外两个问题:1是的,此逻辑需要放置在控制器中,除非您想要众所周知的意大利面代码;2这取决于您要将报告逻辑放置在何处。在网站或报告上。我知道这两者都有可能,但我建议您在报告中保留报告逻辑。如果您知道如何使用参数创建报告,那么您还将知道可以基于参数创建参数。如何操作部分请参见本主题;最后,可以通过reportviewer传递参数: