`
ding20688
  • 浏览: 62896 次
  • 性别: Icon_minigender_1
  • 来自: 烟台
社区版块
存档分类
最新评论

report service研究

阅读更多
報表服務器   

Overwritedatasources: true(是的重寫)   false(不重寫)

TargetDatasourceFolder: 目標數據原始檔案夾,如果不存在,新建檔夾

TargetReportFolder:目標報表檔夾,如果不存在,新建檔夾

TargetServerUrl:目標報表的網址

在訪問遠端報表時,遇到了許可權問題。因為Sharepoint伺服器和報表伺服器分別在不同機器上。在Sharepoint伺服器上運行一切正常,但從其他機器訪問就報沒有許可權。
又是典型的double hop。
基本思想是在報表伺服器上建一個報表專用帳戶,讓Sharepoint伺服器以該用戶的身份調用報表服務。

用戶端 -〉(用戶真實身份) -〉SharePoint伺服器 -〉(類比報表專用帳戶身份)-〉SQL 2005報表伺服器

一、使用web service訪問的處理方法
處理比較簡單,在創建web service proxy類時,類比類比報表專用帳戶。
        public ReportAdapter(string serverURL,string path)
        {
            ReportSvr = new ReportingServer.ReportingService();
            ReportSvr.Credentials = new System.Net.NetworkCredential(“user”, “pwd”, “domain”);
     …..
     後面的代碼不變 
        }
二、使用ReportViewer控制項的處理方法

使用ReportViewer控制項時會麻煩很多。首先,我們不能直接用System.Net.NetworkCredential,必須自己實現一個介面Microsoft.Reporting.WebForms.IReportServerCredentials。
不過網上有很多現成的代碼,也不需要自己寫了。

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Reporting.WebForms;

/// <summary>
/// Summary description for CustomReportCredentials
/// </summary>
[Serializable]
public class CustomReportCredentials : Microsoft.Reporting.WebForms.IReportServerCredentials
{

    // local variable for network credential.
    private string _UserName;
    private string _PassWord;
    private string _DomainName;
    public CustomReportCredentials(string UserName, string PassWord, string DomainName)
    {
        _UserName = UserName;
        _PassWord = PassWord;
        _DomainName = DomainName;
    }
    public System.Security.Principal.WindowsIdentity ImpersonationUser
    {
        get
        {
            return null; // not use ImpersonationUser
        }
    }
    public System.Net.ICredentials NetworkCredentials
    {
        get
        {

            // use NetworkCredentials
            return new System.Net.NetworkCredential(_UserName, _PassWord, _DomainName);
        }
    }
    public bool GetFormsCredentials(out System.Net.Cookie authCookie, out string user, out string password, out string authority)
    {

        // not use FormsCredentials unless you have implements a custom autentication.
        authCookie = null;
        user = password = authority = null;
        return false;
    }
}
需要注意[Serializable],因為我的頁面設置EnableSessionState=”True”,所有的資料都需要可以序列化。
有了類CustomReportCredentials,下面的事情就簡單了
     protected void ButtonViewReport_Click(object sender, EventArgs e)
    {
        DateTime StartDate = System.Convert.ToDateTime(TextBoxStartDate.Value);
        DateTime EndDate = System.Convert.ToDateTime(TextBoxEndDate.Value);
      
        ReportParameter[] Parameters = new ReportParameter[2];
        Parameters[0] = new ReportParameter(“startdate”, StartDate.ToShortDateString());
        Parameters[1] = new ReportParameter(“enddate”, EndDate.ToShortDateString());
        try
        {
            ReportViewer1.ServerReport.ReportServerUrl = new Uri(“http://ctc-bar:81/reportserver“);
            ReportViewer1.ServerReport.ReportPath = “/BARReports/EBCdetaillist”;
            ReportViewer1.ServerReport.ReportServerCredentials = new CustomReportCredentials(“user”, “pwd)”, “domain”);
            ReportViewer1.ServerReport.SetParameters(Parameters);
        }
        catch (Microsoft.Reporting.WebForms.ReportSecurityException ex)
        {
            Response.Write(ex.Message);
        }
        catch (Exception ex2)
        {
            Response.Write(ex2.Message);
        }
    }
很奇怪,在設置ReportServerCredentials前,要對 ReportViewer1.ServerReport.ReportServerUrl和ReportViewer1.ServerReport.ReportPath賦值。但我明明已經在ReportViewer1的設計器中設了這兩個值。
如果不設置ReportServerCredentials,則不需要這樣。

//搜索按鈕

protected void btn_search_Click(object sender, EventArgs e)

    {

        List<ReportParameter> list = new List<ReportParameter>();

        if (this.TextBox1.Text != “”)

        {

            list.Add(new ReportParameter(“userid”, this.TextBox1.Text.Trim()));

        }

        else

        {

            list.Add(new ReportParameter(“userid”));

        }

        ReportViewer1.ServerReport.SetParameters(list);

    }
分享到:
评论

相关推荐

    ReportSystem源代码.zip

    深入研究源代码,有助于提升对Java Web开发的理解,特别是对于报表系统的实现有重要的参考价值。在实际工作中,这样的源代码分析能力有助于我们更好地维护和优化现有的系统,或者开发出更符合业务需求的新系统。

    Reporting Service 父子下拉树型菜单,父子下钻

    2. **报表设计**:使用 Reporting Service 的 Report Designer 创建报表,并设置参数以允许用户选择父级项。可能需要创建多个报表层次,每个层次对应一个级别的数据。 3. **使用脚本**:在需要动态行为的地方(如...

    Android Bluetooth OPP Bugreport

    在Android系统中,Bluetooth OPP(Object Push Profile)是一种用于设备间传输小文件的协议,它允许用户方便地发送图片、联系人、日历事件等数据。...对于具体问题的解决,需要根据Bugreport中的详细信息进行深入研究。

    ReportingService

    - **报表设计**:使用Report Designer(通常与Visual Studio集成),可以创建复杂的报表布局,包括表格、图表、图像、文本框等元素。 - **分页和呈现**:自动处理报表分页,支持HTML、PDF、Excel等多种格式的输出,...

    Comsys_Report_2007_Hughes

    ### Comsys_Report_2007_Hughes:Comprehensive Study on Service Providers and Product Platforms #### 概述 《Comsys_Report_2007_Hughes》是一份全面的研究报告,涵盖了超过300家不同的服务提供商以及近30种...

    Java调用SDK生成报表(初始化连接,设置参数).docx

    这两个定位器将用于获取`ContentManagerService_Port`和`ReportService_Port`,这两个端口对象分别代表了与Cognos服务器上的内容管理和报表服务的交互接口。 ```java // 定义类成员变量 private ...

    报表研究报告

    service.Url = "http://&lt;server&gt;/reportserver/reportservice2010.asmx"; // 激活报表执行 string reportPath = "/Reports/MyReport"; string historyID = ""; string devInfo = "&lt;DeviceInfo&gt;&lt;Toolbar&gt;False...

    基于OpnetModeler的EPON建模和带宽分配算法仿真研究

    在此基础上,进一步仿真了一种基于QoS(Quality of Service)的区分优先级的带宽分配算法,并提供了相应的仿真结果。 #### EPON系统与MPCP协议 ##### EPON系统结构 EPON是一种点到多点的无源光网络结构,其特点是...

    以太无源光网络动态带宽分配算法研究

    动态带宽分配(Dynamic Bandwidth Allocation, DBA)算法对于EPON系统的高效运行至关重要,其目的是在满足服务质量(Quality of Service, QoS)的同时最大化网络带宽利用率。本文介绍了三种DBA算法: 1. **基于授权...

    全球服务网格工具软件行业研究报告.pdf

    服务网格工具软件(Service Mesh Tools Software)是一种专门设计用于管理和服务之间通信的技术,它能够确保微服务架构下的应用程序组件能够高效、安全地交互。这些工具通常提供诸如负载均衡、故障恢复、监控、安全等...

    SAAS物业管理系统源码

    - `service-report` 可能是报表服务,用于生成各类统计数据和报告。 - `service-oa` 涉及办公自动化,可能包含内部工作流程的管理。 - `java110-doc` 是文档或API文档,帮助开发者理解和使用系统。 - `service-...

    NmapDemo.zip

    Nmap,全称为Network Mapper,是一款广泛用于网络探测和安全审计的开源工具。...通过深入研究和扩展这个示例,开发者可以更好地理解和掌握Nmap在实际场景中的应用,提高网络安全管理和诊断的效率。

    mvm-services:人机对用户界面项目的Web服务模块

    总结来说,MVM服务是一个基于Groovy构建的Web服务模块,它提供了网格服务用于数据展示,ReportService用于生成和管理报告,以及ID服务来处理用户认证和授权。这些组件共同构成了一个强大且完整的后端系统,支持MVM...

    Java_EE_Productivity_Report_2011_finalv2.rar_Java编程_Java_

    **Java EE Productivity Report 2011** Java Enterprise Edition(Java EE)是Sun Microsystems(后被Oracle收购)推出的一个企业级应用开发平台,它基于Java Standard Edition(Java SE),为构建可扩展、多层、...

    丝网印刷版市场现状研究分析与发展前景预测报告.docx

    丝网印刷版市场现状研究分析与发展前景预测报告 丝网印刷版是一种重要的印刷技术,尤其在电子、太阳能、显示器等领域有着广泛的应用。2021年中国丝网印刷版市场的销售收入达到显著的万元数额,预计到2028年将进一步...

    cognos培训资料及spss教程

    SPSS(Statistical Product and Service Solutions)则是著名的统计分析软件,广泛应用于社会科学、医学研究、市场研究等领域。这两个工具在数据驱动决策的现代商业环境中扮演着重要角色。 Cognos培训教程通常会...

Global site tag (gtag.js) - Google Analytics