【发布时间】: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 应用程序中?
我想到的一些替代方案:
- 在 IIS 上的应用程序池上禁用“启用 32 位应用程序”,使其以 64 位运行。
- 将 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