MVC 应用程序中的 SSRS 身份验证
SSRS authentication in a MVC application
我有一个 ASP.NET MVC 项目,它使用 ReportingService2010
Web 服务端点连接到 SSRS 以检索和下载报告。
在使用 Visual Studio 运行 管理员权限进行本地开发时,使用 CredentialCache.DefaultCredentials
连接工作正常
当发布到虚拟目录或与 NetworkCredential
和 domain\username
一起使用时,它没有按预期工作。我在SSRS中添加了windows系统用户作为系统管理员。
当前语法仅在 运行 在本地 Visual Studio 中具有管理员权限时有效。
ReportingService2010 service = new ReportingService2010();
service.Credentials = CredentialCache.DefaultCredentials;
CatalogItem[] items = service.ListChildren(reportsFolderPath, true);
有没有办法用 NetworkCredential
配置 domain\username
密码
ReportingService2010 service = new ReportingService2010();
var credentials = new NetworkCredential("insharp", "abc123", "insharp-lenovo");
service.Credentials = credentials;
您不能只添加一个用户(例如 insharp-lenovo\insharp 在站点设置中,您需要授予该用户 "browser" 权限,也许还有更多 - 为了测试,只需授予该用户所有权利,然后逐步删除它们)
但是为什么不调用 SSRS Web 服务,而不仅仅是在应用程序中使用 ReportViewer 控件呢?
无论如何,没有人会为您的应用程序配置 SSRS,所以不要让自己失败。如果可以避免配置,那么它应该是。此外,您还独立于客户 X 上安装的 ReportServer,这是一件好事。
此外,您不想受已安装的 SSRS 版本的支配。
您可以使用它来导出报告(最新版本是reportviewer SSRS2016-preview):
您可以在此处找到完整示例:
https://github.com/ststeiger/ReportViewerWrapper
这是您需要为一份报告执行的操作:
https://github.com/ststeiger/ReportViewerWrapper/blob/master/Embedded2016/Umzugsmitteilung.cs
编辑:
您只在此处的站点设置中添加了用户:
现在您需要在文件夹设置选项卡中授予用户权限
然后点击"Assign New Role",或者随便什么英文名称。
在 SSRS 中找到您的 reportsFolderPath
路径,并打开它的安全设置(您可以通过直接 link 或管理 > 安全访问它)。
在“安全”选项卡中,您将看到具有权限的用户列表,您的用户名应该在这里,以便访问列表文件夹内容。如果您的用户出现在列表中,则单击以编辑它并确保设置所有复选框。如果用户名不存在,则只需添加新用户名,并选中所有复选框。
我有一个 ASP.NET MVC 项目,它使用 ReportingService2010
Web 服务端点连接到 SSRS 以检索和下载报告。
在使用 Visual Studio 运行 管理员权限进行本地开发时,使用 CredentialCache.DefaultCredentials
连接工作正常
当发布到虚拟目录或与 NetworkCredential
和 domain\username
一起使用时,它没有按预期工作。我在SSRS中添加了windows系统用户作为系统管理员。
当前语法仅在 运行 在本地 Visual Studio 中具有管理员权限时有效。
ReportingService2010 service = new ReportingService2010();
service.Credentials = CredentialCache.DefaultCredentials;
CatalogItem[] items = service.ListChildren(reportsFolderPath, true);
有没有办法用 NetworkCredential
domain\username
密码
ReportingService2010 service = new ReportingService2010();
var credentials = new NetworkCredential("insharp", "abc123", "insharp-lenovo");
service.Credentials = credentials;
您不能只添加一个用户(例如 insharp-lenovo\insharp 在站点设置中,您需要授予该用户 "browser" 权限,也许还有更多 - 为了测试,只需授予该用户所有权利,然后逐步删除它们)
但是为什么不调用 SSRS Web 服务,而不仅仅是在应用程序中使用 ReportViewer 控件呢?
无论如何,没有人会为您的应用程序配置 SSRS,所以不要让自己失败。如果可以避免配置,那么它应该是。此外,您还独立于客户 X 上安装的 ReportServer,这是一件好事。
此外,您不想受已安装的 SSRS 版本的支配。
您可以使用它来导出报告(最新版本是reportviewer SSRS2016-preview):
您可以在此处找到完整示例:
https://github.com/ststeiger/ReportViewerWrapper
这是您需要为一份报告执行的操作:
https://github.com/ststeiger/ReportViewerWrapper/blob/master/Embedded2016/Umzugsmitteilung.cs
编辑:
您只在此处的站点设置中添加了用户:
现在您需要在文件夹设置选项卡中授予用户权限
然后点击"Assign New Role",或者随便什么英文名称。
在 SSRS 中找到您的 reportsFolderPath
路径,并打开它的安全设置(您可以通过直接 link 或管理 > 安全访问它)。
在“安全”选项卡中,您将看到具有权限的用户列表,您的用户名应该在这里,以便访问列表文件夹内容。如果您的用户出现在列表中,则单击以编辑它并确保设置所有复选框。如果用户名不存在,则只需添加新用户名,并选中所有复选框。