Использовать отчет SSRS 2008R2 x64 из приложения ASP.NET с использованием Oracle ODAC11.2.0.1.0 в IIS 7.5 (включены 32-разрядные приложения) в Win7 x64 - PullRequest
0 голосов
/ 15 декабря 2011

На моей машине для разработки (Win7 x64, IIS 7.5, SSRS 2008R2 x64) у меня есть приложение ASP.Net (пул приложений с «Включить 32-разрядные приложения», установленный на «True»), подключающийся к серверу базы данных Oracle,с использованием поставщика данных Oracle для .Net 32 ​​бита (ODAC 11.2.0.1.0, Oracle.DataAccess 2.112.1.0.).IIS 7.5 и SSRS 2008 R2 работают на одном компьютере разработчика.Oracle работает на тестовом сервере.

Работает нормально, за исключением случаев, когда я встраиваю отчет из SSRS 2008 R2 с использованием ReportViewer, например так:

    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)

Соответствующее сообщение, которое я думаю: « Эта проблема возникает при работе в 64-битном режиме с установленными 32-битными клиентскими компонентами Oracle. »

Также, вДиспетчер задач, который я проверил, 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. Diable «Включить 32-разрядные приложения» в пуле приложений на IIS, поэтому он будет работать как 64-разрядный.
  2. Изменить процесс SSRS на 32-битный.(Это вообще возможно?)

Кроме того, я опубликовал отчеты на другом сервере (SSRS 2008 R2 x64 на Win 2008 R2 x64) и могу без проблем встраивать их в мой ASP.Чистое 32-битное приложение на моей машине для разработки.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 15 августа 2012

решаемая.

Установлен поставщик данных Oracle для 64-разрядных .Net (ODAC 11.2.0.1.0, Oracle.DataAccess 2.112.1.0.) И отключено «Включить 32-разрядные приложения» в пуле приложений в IIS, поэтому он будет работатькак 64-битные.

Таким образом, он может подключаться к SSRS 2008 R2 64 бит

...