实现SQL Server 2008 Reporting Services匿名访问报表有两种方法。
一、通过修改SQL Server 2008的配置文件,去掉Windows的验证。
1.首先我们找到SQL安装目录下的两个Web.config配置文件,默认安装目录分别是(C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer和C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportManager),然后,找到两个配置文件中的
<authentication mode="windows"/> <identity impersonate="true"/>
将其改为:
<authentication mode="None"/> <identity impersonate="false" />
2.找到(C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer)目录下的rsreportserver.config文件,找到配置文件中的
<Authentication>
<AuthenticationTypes>
<RSWindowsNegotiate/>
<RSWindowsNTLM/>
</AuthenticationTypes>
<RSWindowsExtendedProtectionLevel>Off</RSWindowsExtendedProtectionLevel>
<RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionScenario>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
将其改为:
<Authentication>
<AuthenticationTypes>
<Custom/>
</AuthenticationTypes>
<RSWindowsExtendedProtectionLevel>Off</RSWindowsExtendedProtectionLevel>
<RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionScenario>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
然后找到配置文件中的
<Security>
<Extension Name="Windows" Type="Microsoft.ReportingServices.Authorization.WindowsAuthorization, Microsoft.ReportingServices.Authorization"/>
</Security>
<Authentication>
<Extension Name="Windows" Type="Microsoft.ReportingServices.Authentication.WindowsAuthentication,Microsoft.ReportingServices.Authorization"/>
</Authentication>
将其改为:
<Security>
<Extension Name="None" Type="Microsoft.Samples.ReportingServices.AnonymousSecurity.Authorization,Microsoft.Samples.ReportingServices.AnonymousSecurity"/> </Security>
<Authentication>
<Extension Name="None" Type="Microsoft.Samples.ReportingServices.AnonymousSecurity.AuthenticationExtension,Microsoft.Samples.ReportingServices.AnonymousSecurity"/>
</Authentication>
这里需要引用一个DLL文件,就是Microsoft.Samples.ReportingSerices.
3.将dll放入到目录C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer\bin,接下来继续修改我们的配置文件,在(C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer)目录下,找到rssrvpolicy.config找到
<CodeGroup class="FirstMatchCodeGroup" version="1" PermissionSetName="Nothing">
<IMembershipCondition class="AllMembershipCondition" version="1" />
在其下边追加如下节点(红色部分,按照你的实际路径而定)
<CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust" Name="Private_assembly" Description="This code grou p grants custom code full trust.">
<IMembershipCondition class="UrlMembershipCondition" version="1" Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER2008\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.AnonymousSecurity.dll"/>
</CodeGroup>
到此为止,我们匿名登录的方式,配置工作就完成了。
二、利用接口IReportServerCredentials 和IReportServerConnection将Windows的用户名和密码传进去以实现匿名访问报表。
1.利用IReportServerCredentials 接口
接口定义为:
using System;
using Microsoft.Reporting.WebForms;
using System.Net;
using System.Security.Principal;
using System.Configuration;
namespace SqlReport
{
[Serializable]
class MyConfigFileCredentials : IReportServerCredentials
{
public MyConfigFileCredentials()
{
}
public WindowsIdentity ImpersonationUser
{
get
{
return null;
}
}
public ICredentials NetworkCredentials
{
get
{
return new NetworkCredential("Administrator","123456");//windows的用户名和密码
}
}
public bool GetFormsCredentials(out Cookie authCookie, out string userName, out string password, out string authority)
{
authCookie = null;
userName = null;
password = null;
authority = null;
return false;
}
}
}
在调用报表的代码如下:
using System;
using System.Web;
using Microsoft.Reporting.WebForms;
namespace SqlReport
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if ((!IsPostBack) && Request.QueryString.Count > 0)
{
string reportPath = Request.QueryString[0];
this.ReportLabel.Text = Request.QueryString[0];
this.ReportViewer3.ProcessingMode = ProcessingMode.Remote;
MyConfigFileCredentials rsc = new MyConfigFileCredentials();
this.ReportViewer3.ServerReport.ReportServerCredentials = rsc;
this.ReportViewer3.ServerReport.ReportPath = reportPath;
this.ReportViewer3.ServerReport.ReportServerUrl = new Uri((Properties.Settings.Default.MyReportServerUrl));
this.ReportViewer3.ServerReport.Refresh();
}
}
}
}
2.利用IReportServerConnection接口,接口定义:
using System;
using System.Collections.Generic;
using System.Net;
using System.Security.Principal;
using Microsoft.Reporting.WebForms;
namespace SqlReport
{
[Serializable]
public class MyReportServerConnection : IReportServerConnection
{
public Uri ReportServerUrl
{
get
{
string url = Properties.Settings.Default.MyReportServerUrl;
if (string.IsNullOrEmpty(url))
throw new Exception("Missing url from the Web.config file");
return new Uri(url);
}
}
public int Timeout
{
// set timeout to 60 seconds
get { return 60000; }
}
public IEnumerable<Cookie> Cookies
{
// No custom cookies
get { return null; }
}
public IEnumerable<string> Headers
{
// No custom headers
get { return null; }
}
public MyReportServerConnection()
{
}
public WindowsIdentity ImpersonationUser
{
get { return null; }
}
public ICredentials NetworkCredentials
{
get
{
//this will force the use of impersonation,
// otherwise, remove the return null and
// implement the other app settings to specify the credential details
// return null;
string userName = Properties.Settings.Default.myReportViewerUser;
if (string.IsNullOrEmpty(userName))
throw new Exception("Missing user name from Web.config file");
string password = Properties.Settings.Default.MyReportViewerPassword;
if (string.IsNullOrEmpty(password))
throw new Exception("Missing password from Web.config file");
string domain = Properties.Settings.Default.MyReportViewerDomain;
if (string.IsNullOrEmpty(domain))
throw new Exception("Missing domain from Web.config file");
return new NetworkCredential(userName, password, domain);
//return new NetworkCredential(userName, password);
}
}
public bool GetFormsCredentials(out Cookie authCookie, out string userName, out string password, out string authority)
{
authCookie = null;
userName = null;
password = null;
authority = null;
return false;
}
}
}
在调用报表的代码如下:
using System;
using System.Web;
using Microsoft.Reporting.WebForms;
namespace SqlReport
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if ((!IsPostBack) && Request.QueryString.Count > 0)
{
string reportPath = Request.QueryString[0];
this.ReportLabel.Text = Request.QueryString[0];
this.ReportViewer3.ProcessingMode = ProcessingMode.Remote;
MyReportServerConnection rsc = new MyReportServerConnection();
this.ReportViewer3.ServerReport.ReportServerCredentials = rsc;
this.ReportViewer3.ServerReport.ReportPath = reportPath;
this.ReportViewer3.ServerReport.ReportServerUrl = new Uri((Properties.Settings.Default.MyReportServerUrl));
this.ReportViewer3.ServerReport.Refresh();
}
}
}
}
ok,到此就可以实现了。
分享到:
相关推荐
这些步骤包括在Reporting Services站点设置匿名用户角色、在SQL Server中为匿名用户配置登录及权限、以及在IIS中开启匿名访问等功能。这些操作有助于实现更灵活的报表发布方式,使得非认证用户也能访问某些公开报表...
在SQL Server 2008中的Reporting Services,允许匿名访问报表是实现无认证用户查看报告的一种方式。以下是如何设置Reporting Service for SQL 2008以支持匿名访问报表的详细步骤: 1. **编译AnonymousSecurity组件*...
网上有关于“SQL Server 2008 Reporting Services匿名访问”的教程,通过修改Reporting Services下的配置文件来实现,我对着着教程做了一遍,没有成功。 突然想到,我只是让有权限的USER账号能访问就行,没必要实现...
Microsoft.Samples.ReportingServices.AnonymousSecurity.dll文件。 使用方法请参考: http://blog.csdn.net/cendywang/article/details/9194087#comments
6. **使用示例代码**: `Microsoft.Samples.ReportingServices.AnonymousSecurity.dll` 文件可能是一个示例库,提供了实现匿名访问的代码示例。开发者可以参考这个库来了解如何编程式地处理Reporting Services的匿名...
实现SQL 2008 Report Server的匿名访问主要涉及以下几个步骤: 1. **配置IIS**:Report Server是通过Internet Information Services (IIS) 提供Web服务的,因此我们需要在IIS中启用匿名身份验证。打开IIS管理器,...
以下是关于SQL Server 2008 Reporting Services匿名访问配置的相关知识点: 1. **启用IIS匿名身份验证**:在配置报表服务的匿名访问时,首先需要在IIS(Internet Information Services)中启用匿名身份验证。这通常...
- **SQL Server Reporting Services (SSRS)**:报表服务。 - **SQL Server Integration Services (SSIS)**:数据集成服务。 - **SQL Server 代理**:用于调度作业。 - **SQL Full-text Filter Daemon Launcher**...
这些可以通过SQL Server Reporting Services或 Crystal Reports 实现,帮助管理层做出决策。 9. **安装部署**: 完成开发后,需要打包成安装程序,确保在目标环境中能顺利安装并运行。部署过程要考虑配置文件、...
9. 报表和统计:系统可能集成了报表生成和数据分析功能,例如使用Crystal Reports或SSRS(SQL Server Reporting Services),帮助管理层获取业务指标和决策依据。 10. 移动设备支持:随着移动办公的需求增加,OA...
同时,SQL Server 2005的Reporting Services提供了灵活的报表设计工具,与C#结合可以实现高效的数据可视化。 三、进销存核心功能 1. **进货管理**:系统记录每笔进货的详细信息,包括商品名称、数量、单价、供应商...
1. **Reporting Services**:SQL Server Reporting Services 是一个用于生成、管理和分发报表的服务,它依赖于IIS来提供Web服务接口,使得用户可以通过浏览器查看报表。 2. **Analysis Services**:SQL Server ...
- ** Reporting Services**:SQL Server 2005的Reporting Services需要IIS来发布报表,用户可以通过Web浏览器访问报表。 - **Analysis Services**:IIS用于提供OLAP(在线分析处理)的Web接口,使得用户可以通过...
3. **SSRS(SQL Server Reporting Services)**:SSRS提供了一个企业级的报表平台,可以创建丰富的交互式报表,并能够分发到多种格式。 4. **SSAS(SQL Server Analysis Services)**:SSAS提供了多维数据处理和...
22.3.2 启用匿名访问 502 22.3.3 创建专业的Internet存在 503 22.3.4 创建全局导航 505 22.3.5 创建“新闻速递”发布流程 507 22.3.6 配置新闻速递存档 510 22.3.7 配置bug跟踪指标 512 22.3.8 配置技术文章工作流...
7. **报表生成**:可能使用Crystal Reports或内置的Reporting Services创建工资单、考勤统计等报表。 8. **性能优化**:考虑数据库索引设置,避免全表扫描,优化查询性能。 9. **版本控制**:通过版本控制系统(如...
其内置的 Reporting Services 和 Analysis Services 还能帮助管理者生成报表和进行数据分析,为决策提供有力支持。 考务信息管理系统的核心功能包括: 1. 考生管理:录入、修改、删除考生基本信息,如姓名、学号、...
这可以通过报表工具如Crystal Reports或SQL Server Reporting Services实现。同时,日志记录对于跟踪系统行为和故障排查也非常重要。 5. 安全性:银行系统对安全性有极高要求,包括数据加密、权限管理、防火墙等。...