在我的开发机器上(Win7 x64,IIS 7.5,SSRS 2008R2 x64),我有一个连接到Oracle数据库服务器的ASP.Net应用程序(将“启用32位应用程序”设置为“True”的应用程序池),使用Oracle Data Provider for .Net 32位(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服务器上发布的报告之间存在冲突。
所以,我的问题是,如何在我的ASP.Net应用程序中嵌入这些SSRS报告?
我想过的一些替代方案:
此外,我已将报告发布到另一台服务器(Win 2008 R2 x64上的SSRS 2008 R2 x64),我可以在我的开发机器上使用我的ASP.Net 32位应用程序轻松嵌入它们。
非常感谢任何帮助。
答案 0 :(得分:0)
解决。
在IIS上的应用程序池上安装.Net 64位(ODAC 11.2.0.1.0,Oracle.DataAccess 2.112.1.0。)并禁用“启用32位应用程序”的Oracle数据提供程序,因此它将以64-运行位。
这样,它可以连接到SSRS 2008 R2 64位