【问题标题】:Consume SSRS 2008R2 x64 report from ASP.NET app using Oracle ODAC11.2.0.1.0 on IIS 7.5 (Enabled 32 bit apps) on Win7 x64在 Win7 x64 上的 IIS 7.5(启用 32 位应用程序)上使用 Oracle ODAC11.2.0.1.0 从 ASP.NET 应用程序使用 SSRS 2008R2 x64 报告
【发布时间】:2011-12-14 22:09:01
【问题描述】:

在我的开发机器(Win7 x64、IIS 7.5、SSRS 2008R2 x64)上,我有一个连接到 Oracle 数据库服务器的 ASP.Net 应用程序(“启用 32 位应用程序”设置为“True”的应用程序池),使用适用于 .Net 32​​ 位的 Oracle 数据提供程序(ODAC 11.2.0.1.0、Oracle.DataAccess 2.112.1.0.)。 IIS 7.5 和 SSRS 2008 R2 在同一台开发机器上运行。 Oracle 在测试服务器上运行。

它工作正常,除非我使用 ReportViewer 嵌入来自 SSRS 2008 R2 的报告,如下所示:

    reportViewer.ProcessingMode = ProcessingMode.Remote
    reportViewer.ServerReport.ReportServerCredentials = New ReportServerCredentials()
    Dim serverReport As ServerReport
    serverReport = reportViewer.ServerReport
    serverReport.ReportPath = "/" + ReportServerCredentials.ReportFolder + "/rptParteIngreso"
    serverReport.ReportServerUrl = New Uri(ReportServerCredentials.urlServerReporting)
    Dim parameters() As ReportParameter = {P_IDPAIS, P_FECHAINICIO, P_FECHAFIN, P_NROPARTE, P_FLAGAPROBING}

    Try
        serverReport.SetParameters(parameters)
    Catch ex As Exception
        MessageBoxs.Show(ex.InnerException.ToString())
    End Try

它会抛出以下错误:

Microsoft.Reporting.WebForms.ReportServerException was unhandled by user code
  ErrorCode=rsProcessingAborted
  Message=Error al procesar el informe. (rsProcessingAborted)
  Source=Microsoft.ReportViewer.WebForms
  StackTrace:
       en Microsoft.Reporting.WebForms.ServerReportSoapProxy.OnSoapException(SoapException e)
       en Microsoft.Reporting.WebForms.Internal.Soap.ReportingServices2005.Execution.RSExecutionConnection.ProxyMethodInvocation.Execute[TReturn](RSExecutionConnection connection, ProxyMethod`1 initialMethod, ProxyMethod`1 retryMethod)
       en Microsoft.Reporting.WebForms.Internal.Soap.ReportingServices2005.Execution.RSExecutionConnection.SetExecutionParameters(ParameterValue[] Parameters, String ParameterLanguage)
       en Microsoft.Reporting.WebForms.ServerReport.SetParameters(IEnumerable`1 parameters)
.....
       en System.Web.UI.Control.OnLoad(EventArgs e)
       en System.Web.UI.Control.LoadRecursive()
       en System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
       ErrorCode=rsErrorOpeningConnection
       Message=Cannot create a connection to data source 'DSRRHH'. (rsErrorOpeningConnection)
       InnerException: Microsoft.Reporting.WebForms.ReportServerException
            Message=El intento de cargar las bibliotecas de clientes de Oracle lanzó BadImageFormatException. **Este problema ocurrirá al ejecutar el modo 64 bits con los componente cliente de Oracle de 32 bits instalados**.
            InnerException: Microsoft.Reporting.WebForms.ReportServerException
                 Message=Se ha intentado cargar un programa con un formato incorrecto. (Excepción de HRESULT: 0x8007000B)

我认为相关消息是“在安装了 32 位 Oracle 客户端组件的 64 位模式下运行时会出现此问题。

另外,在任务管理器中,我检查了 Reporting Services 是否以 64 位进程 (ReportingServicesService.exe) 运行,并且我的应用程序正在 32 位 (w3wp.exe *32) 上运行。

但是,在设计报告时,它工作正常,使用“.Net Framework Data Provider for Oracle”,我认为这是由 Microsoft 提供的。

所以,我的结论是我的 ASP.Net 应用程序(以 32 位运行)和我在 SSRS 2008 R2 x64 服务器上发布的报告之间存在冲突。

那么,我的问题是,如何将这些 SSRS 报告嵌入到我的 ASP.Net 应用程序中?

我想到的一些替代方案:

  1. 在 IIS 上的应用程序池上禁用“启用 32 位应用程序”,使其以 64 位运行。
  2. 将 SSRS 进程更改为以 32 位运行。 (这甚至可能吗?)

此外,我已将报告发布到另一台服务器(Win 2008 R2 x64 上的 SSRS 2008 R2 x64),我可以在我的开发机器上的 ASP.Net 32​​ 位应用程序中毫无问题地嵌入它们。

任何帮助将不胜感激。

【问题讨论】:

  • 更新:已解决。为 .Net 64 位安装了 Oracle 数据提供程序(ODAC 11.2.0.1.0,Oracle.DataAccess 2.112.1.0。)并在 IIS 上的应用程序池上禁用了“启用 32 位应用程序”,因此它将以 64 位运行。这样,它可以连接到 SSRS 2008 R2 64 位。

标签: asp.net oracle reporting-services iis-7.5 32bit-64bit


【解决方案1】:

解决了。

为 .Net 64 位(ODAC 11.2.0.1.0、Oracle.DataAccess 2.112.1.0)安装了 Oracle 数据提供程序,并在 IIS 上的应用程序池上禁用了“启用 32 位应用程序”,因此它将以 64-位。

这样就可以连接SSRS 2008 R2 64 bits

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多