找回密码
 立即注册

QQ登录

只需一步,快速开始

john

注册会员

1

主题

13

帖子

16

积分

注册会员

积分
16

活字格认证

最新发帖
john
注册会员   /  发表于:2010-1-12 12:32  /   查看:19318  /  回复:17
(急,在线等)关于ActiveReport 6.0试用版
安装使用该试用版,在VS 2005上调试运行 web viewer,运行正常,可以看到运行结果!
但是发布到IIS网站上,运行出错!
运行结果:
Error executing child request for /R0000/ReportViewer.aspx.
请教原因!
是试用版的原因吗?

17 个回复

倒序浏览
dennis
葡萄城公司职员   /  发表于:2010-1-12 14:04:00
沙发
IIS的机器安装了AR没有?
另外错误的原因能否详细提供,从错误内容看不出是AR的原因啊!
回复 使用道具 举报
Carl
版主   /  发表于:2010-1-12 14:17:00
板凳
另外请楼主说明一下你的AR6.0的具体的Build号,英文版还是日文版。
愿 Engine 归于沉寂,Timer 停止运动,Message Queue 不再流淌,Data Source 为我掌握
回复 使用道具 举报
john
注册会员   /  发表于:2010-1-12 14:19:00
地板
试了两种方式。
1.  iis在windows 2003 server上,没有装AR
2.  iis 在windows XP上 ,安装了vs2005和AR 6.0
3.  发布的网站上bin里都放了ActiveReports.Web.dll, ActiveReports6.dll,ActiveReports.PdfExport.dll等8个AR dll文件.
4. web.config: 追加了httpHandlers
      <assemblies>
        <add assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="Microsoft.ReportViewer.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="ActiveReports.HtmlExport, Version=6.0.2019.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff" />
        <add assembly="ActiveReports.PdfExport, Version=6.0.2019.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff" />
        <add assembly="ActiveReports.XlsExport, Version=6.0.2019.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff" />
      </assemblies>
      <buildProviders>
        <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </buildProviders>

。。。。。
    <httpHandlers>
      <add path="*.rpx" verb="*" type="DataDynamics.ActiveReports.Web.Handlers.RpxHandler, ActiveReports.Web, Version=6.0.2019.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff" />
      <add path="*.ActiveReport" verb="*" type="DataDynamics.ActiveReports.Web.Handlers.CompiledReportHandler, ActiveReports.Web, Version=6.0.2019.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff" />
      <add path="*.ArCacheItem" verb="*" type="DataDynamics.ActiveReports.Web.Handlers.WebCacheAccessHandler, ActiveReports.Web, Version=6.0.2019.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff" />
      <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
        validate="false" />
    </httpHandlers>

结果:访问这2个 IIS网站都发生上述错误。但是在VS2005调试,结果显示正确!
回复 使用道具 举报
glee_star
新手上路   /  发表于:2010-1-12 14:19:00
5#
你的问题貌似IIS的缺陷导致,和 ActiveReport 6.0没有关系,请参看如下说明:

症状:
当试图从 ASP.NET 页向活动服务器页 (ASP) 页传输控件在 ASP.NET 页中使用 Server.Transfer 或 Server.Execute 方法时您可能会收到以下错误信息:
Error executing child request for /R0000/ReportViewer.aspx.

解决方案:
要解决此问题,请使用下列方法之一(有关的详细信息,请参阅此列表):
1、使用 Response.Redirect。
在 HttpHandler 的 ProcessRequest() 方法中使用 Response.Redirect,而不是使用 Server.Transfer 或 context.Server.Execute。
修改后的 ProcessRequest() 方法如下所示:
Visual C# .NET 代码
public void ProcessRequest(HttpContext context)
{
        HttpRequest Request = context.Request;
        HttpResponse Response = context.Response;
        string redirurl = Request.RawUrl.Replace (&quot;test.ashx/&quot;, &quot;&quot;);
        context.RewritePath (redirurl);                       
        Response.Redirect(redirurl);
}

Visual Basic .NET 代码
Public Sub ProcessRequest(ByVal context As HttpContext) _
    Implements IHttpHandler.ProcessRequest
    Dim Request As HttpRequest = context.Request
    Dim Response As HttpResponse = context.Response
    Dim redirurl As String = Request.RawUrl.Replace(&quot;test.ashx/&quot;, &quot;&quot;)
    context.RewritePath(redirurl)      
    Response.Redirect(redirurl)
End Sub

2、添加 Context.Rewrite 路径:
在 Global.asax 文件的 Application_BeginRequest 事件中添加 Context.Rewrite 路径。
修改后的 Application_BeginRequest 事件如下所示:
protected void Application_BeginRequest(Object sender, EventArgs e)
{                       
        string redirurl = Request.RawUrl.Replace (&quot;test.ashx/&quot;, &quot;&quot;);               
        this.Context.RewritePath(redirurl);
}

Visual Basic .NET 代码
Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    Dim redirurl As String
    redirurl = Request.RawUrl.Replace(&quot;test.ashx/&quot;, &quot;&quot;)
    Me.Context.RewritePath(redirurl)
End Sub
回复 使用道具 举报
john
注册会员   /  发表于:2010-1-12 14:35:00
6#

回复 3# Carl 的帖子

使用的英文版 6.0.2019.0
回复 使用道具 举报
john
注册会员   /  发表于:2010-1-12 14:54:00
7#

回复 5# glee_star 的帖子

在Global.asax中追加上述代码:
    protected void Application_BeginRequest(Object sender, EventArgs e)
    {
        string redirurl = Request.RawUrl.Replace(&quot;ReportViewer.ashx/&quot;, &quot;&quot;);
        this.Context.RewritePath(redirurl);
    }
运行结果:错误现象一样!
回复 使用道具 举报
Carl
版主   /  发表于:2010-1-13 09:00:00
8#
请LZ确认一下这个错误是AR引起的,还是IIS部署引起的。我们自己尝试结果都是正常的。
愿 Engine 归于沉寂,Timer 停止运动,Message Queue 不再流淌,Data Source 为我掌握
回复 使用道具 举报
john
注册会员   /  发表于:2010-1-13 12:51:00
9#

回复 8# Carl 的帖子

说实在的,我无法确认出原因是哪方面引起的。
我在开发的机器上安装了ar 6.0 , 在VS2005自带的web上调试,web viewer等显示正常,可以看到html和pdf两种方式的报表。
可是我通过vs2005发行到iis上,查看报表就不正确了,出现错误结果:
Error executing child request for /R0000/ReportViewer.aspx.
我的发布过程
1 web.config,追加了httpHandlers(内容上面列举了)
2 第一次发布,运行assembly等错,网站不能运行。
  发现AR等dll库文件没有发布。
  我在bin里都放了ActiveReports.Web.dll, ActiveReports6.dll,ActiveReports.PdfExport.dll等8个AR dll文件.然后发布,网站可以运行。
  但是无法看到报表,出现上述出错。

我不知道,这样发布设定是否准确?
请教正确设定方法!
回复 使用道具 举报
john
注册会员   /  发表于:2010-1-13 12:58:00
10#

回复 9# john 的帖子

程序调用过程:
1 report调用
Server.Transfer("~/R0000/ReportViewer.aspx",false);

2 reportviewer.aspx
-------------------------------------------
<%@ Page Language="C#" MasterPageFile="~/VivaBase.master" AutoEventWireup="true" Inherits="R0000_ReportViewer" Title="ReportViewer" Codebehind="ReportViewer.aspx.cs" %>
<%@ Register TagPrefix="activereportsweb" Namespace="DataDynamics.ActiveReports.Web"
    Assembly="ActiveReports.Web, Version=6.0.2019.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff" %>
<%@ PreviousPageType VirtualPath="~/R0000/R1001.aspx" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
<table style="width:100%;height:100%">
    <tr>
        <td align="left">
            <aspabel ID="lblViewerType" runat="server" Font-Bold="True" >Select Viewer Type:</aspabel>&amp;nbsp;
            <aspropDownList ID="cboViewerType" runat="server" Width="150px">
            </aspropDownList>
            <asp:Button ID="BtnView" runat="server" OnClick="BtnView_Click"  Text="View" Width="65px" />
        </td>
    </tr>
    <tr style="width:100%;height:95%">
        <td align="center" >
            <activereportsweb:WebViewer ID="arvWebMain" runat="server" Width="100%" Height="650px">
                <dfExportOptions
                    Application="GrapeCity ActiveReports (tm) 6">
                </PdfExportOptions>
                <FlashViewerOptions ShowSplitter="False" ShowToc="False">
                </FlashViewerOptions>   
            </activereportsweb:WebViewer>
        </td>
    </tr>
</table>
</asp:Content>
----------------------------------
reportviewer.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
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 DataDynamics.ActiveReports;

public partial class R0000_ReportViewer : System.Web.UI.Page
    {
    public string rptName = string.Empty;

    protected void Page_Load(object sender, System.EventArgs e)
    {

        // Put user code to initialize the page here
        // if this is not the postback, then fill the dropdown/combo with it's available viwer types.
        if (!this.IsPostBack)
        {
            // it's not a postback, so populate that combo
            this.cboViewerType.Items.Clear();
            this.cboViewerType.Items.Add("HtmlViewer");
            this.cboViewerType.Items.Add("DF Reader");
            this.cboViewerType.Items.Add("MS Excel");
            //this.cboViewerType.Items.Add("FlashViewer");
            //this.cboViewerType.Items.Add("RawHtml");
            this.cboViewerType.SelectedIndex = 0;// the default is HTML.

            if (Page.PreviousPage != null) {
                string RptType = PreviousPage.RptType;
                switch (RptType)
                {
                    case "0801":
                        arvWebMain.ReportName = "Rpt01.rpx";
                        break;
                    case "0802":
                        arvWebMain.ReportName = "Rpt02.rpx";
                        break;
                    case "0803":
                        arvWebMain.ReportName = "Rpt03.rpx";
                        break;
                    case "0804":
                        arvWebMain.ReportName = "Rpt04.rpx";
                        break;
                    case "0805":
                        arvWebMain.ReportName = "Rpt05.rpx";
                        break;
                    case "0806":
                        arvWebMain.ReportName = "Rpt06.rpx";
                        break;
                }
            }
        }
    }
        #region Web Form Designer generated code
                override protected void OnInit(EventArgs e)
                {
                        //
                        // CODEGEN: This call is required by the ASP.NET Web Form Designer.
                        //
                        InitializeComponent();
                        base.OnInit(e);
                }
               
                /// <summary>
                /// Required method for Designer support - do not modify
                /// the contents of this method with the code editor.
                /// </summary>
                private void InitializeComponent()
                {   

                }
        #endregion

                /// <summary>
                /// commit_Click - runs with the user click the view button
                /// and selects a different viewing mode.
                /// </summary>
        protected void BtnView_Click(object sender, EventArgs e)
                {
            // Set the Viewer Type from the dropdown list to the ActiveReports WebViewer
            string selection = this.cboViewerType.Items[this.cboViewerType.SelectedIndex].Text;
            switch (selection)
            {
                case "DF Reader":  //Acrobat Reader was chosen as the viewer type
                    this.arvWebMain.ViewerType = DataDynamics.ActiveReports.Web.ViewerType.AcrobatReader;
                    break;
                //case "FlashViewer":  //Flash was chosen as the viewer type
                //    this.arvWebMain.ViewerType = DataDynamics.ActiveReports.Web.ViewerType.FlashViewer;
                //    break;
                case "HtmlViewer":  //HTML Viewer was chosen as the viewer type
                    this.arvWebMain.ViewerType = DataDynamics.ActiveReports.Web.ViewerType.HtmlViewer;
                    break;
                case "RawHtml":  //Raw HTML was chosen as the viewer type
                    this.arvWebMain.ViewerType = DataDynamics.ActiveReports.Web.ViewerType.RawHtml;
                    break;
                case "MS Excel":
                    break;
            }
        }
    }
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部