2014-11-25 2 views
0

У меня есть .net-приложение, которое было в .net 3.0 и с использованием Crystal Reports 10.5 мы перенесли на .net 4.5 и новый веб-сервер разработки/тестирования с использованием .net 4.5 теперь приложение не загружается..net приложение, использующее хрустальные отчеты, не работающие на сервере разработки

ошибки, которые я получаю являются:

Ошибка сервера в приложении '/'.

Ошибка конфигурации Описание: Произошла ошибка при обработке файла конфигурации, необходимого для обслуживания этого запроса. Ознакомьтесь с конкретными сведениями об ошибках ниже и соответствующим образом измените свой файл конфигурации.

Сообщение об ошибке Parser: не удалось загрузить файл или сборку «CrystalDecisions.Web, Version = 10.5.3700.0, Culture = neutral, PublicKeyToken = 692fbea5521e1304» или одну из его зависимостей. Система не может найти указанный файл.

Источник ошибки:

Line 16:  <compilation debug="true" targetFramework="4.5"> 
Line 17:  <assemblies> 
Line 18: <add assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" /> 
Line 19:   <add assembly="CrystalDecisions.Shared, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" /> 
Line 20:   <add assembly="CrystalDecisions.ReportSource, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" /> 

Исходный файл: E: \ IIS_Sites \ Носа \ WebSAR \ 3.8.1 \ web.config Line: 18

Ассамблеи Load Трейс: Следующая информация может быть полезной чтобы определить, почему сборка «CrystalDecisions.Web, Version = 10.5.3700.0, Culture = neutral, PublicKeyToken = 692fbea5521e1304» не может быть загружена.

Ассамблеи менеджер загружается из: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ clr.dll Запуск под исполняемому C: \ Windows \ system32 \ Inetsrv \ w3wp.exe --- Подробная ошибка log следует.

=== Информация о состоянии Pre-связывать === LOG: DisplayName = CrystalDecisions.Web, Version = 10.5.3700.0, Culture = нейтрально, PublicKeyToken = 692fbea5521e1304 (Полностью указан) LOG: Appbase = файл: /// C:/inetpub/wwwroot/ LOG: Initial PrivatePath = C: \ inetpub \ wwwroot \ bin

Вызов сборок: (Неизвестно).

LOG: Это связывание начинается с контекста нагрузки по умолчанию. LOG: Использование файла конфигурации приложения: C: \ inetpub \ wwwroot \ web.config LOG: Использование файла конфигурации хоста: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet.config LOG: Использование конфигурации компьютера файл из C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ config \ machine.config. LOG: Послеполитическая ссылка: CrystalDecisions.Web, Version = 10.5.3700.0, Culture = neutral, PublicKeyToken = 692fbea5521e1304 LOG: То же самое связывание было замечено раньше, и с ошибкой hr = 0x80070002.

Я установил кристальное время выполнения.

Я не уверен, что еще попробовать.

благодаря

ответ

0

ли следующие файлы в каталоге бен вашего сайта/приложения? crystaldecisions.crystalreports.engine.dll, crystaldecisions.reportsource.dll, crystaldecisions.shared.dll, crystaldecisions.web.dll.

Кроме того, я считаю, что версия CR скомпилирована под .NET 2.0, поэтому вам может потребоваться включить время выполнения legacyV2. Вы можете сделать это через файл app.config, добавив в элемент запуска useLegacyV2RuntimeActivationPolicy = "true". Или вы можете сделать это в коде с помощью класса RuntimePolicyHelper. например.

Imports System.Runtime.InteropServices 
Imports System.Runtime.CompilerServices 

'instantiate your class 

Public Sub New() 

    Try 
     'runtime support for mixed mode assemblies 
     'this is used to load .NET 2.0 assemblies that crystal reports is built against. 
     If RuntimePolicyHelper.LegacyV2RuntimeEnabledSuccessfully = True Then 

     Else 
      If MsgBox("Legacy CLR could not be loaded. Continue?", _ 
         vbYesNo + vbExclamation, _ 
         "Failed to load legacy runtime.") = vbNo Then 
       Application.Exit() 
      End If 
     End If 
    Catch ex As Exception 
     ex = New Exception(ex.Message & vbCrLf & ex.StackTrace) 
     Throw ex 
    End Try 

End Sub 

Public NotInheritable Class RuntimePolicyHelper 
    Private Sub New() 
    End Sub 
    Public Shared Property LegacyV2RuntimeEnabledSuccessfully() As Boolean 
     Get 
      Return m_LegacyV2RuntimeEnabledSuccessfully 
     End Get 
     Private Set(value As Boolean) 
      m_LegacyV2RuntimeEnabledSuccessfully = value 
     End Set 
    End Property 

    Private Shared m_LegacyV2RuntimeEnabledSuccessfully As Boolean 

    Shared Sub New() 
     Try 

      Dim clrRuntimeInfo As ICLRRuntimeInfo = _ 
       DirectCast(RuntimeEnvironment.GetRuntimeInterfaceAsObject(Guid.Empty, _ 
       GetType(ICLRRuntimeInfo).GUID), ICLRRuntimeInfo) 
      Try 
       clrRuntimeInfo.BindAsLegacyV2Runtime() 
       LegacyV2RuntimeEnabledSuccessfully = True 
      Catch generatedExceptionName As COMException 
       LegacyV2RuntimeEnabledSuccessfully = False 
      End Try 

     Catch ex As Exception 
      ex = New Exception(ex.Message & vbCrLf & ex.StackTrace) 
      Throw ex 
     End Try 
    End Sub 



    <ComImport()> _ 
    <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _ 
    <Guid("xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx")> _ 
    Private Interface ICLRRuntimeInfo 
     Sub xGetVersionString() 
     Sub xGetRuntimeDirectory() 
     Sub xIsLoaded() 
     Sub xIsLoadable() 
     Sub xLoadErrorString() 
     Sub xLoadLibrary() 
     Sub xGetProcAddress() 
     Sub xGetInterface() 
     Sub xSetDefaultStartupFlags() 
     Sub xGetDefaultStartupFlags() 

     <MethodImpl(MethodImplOptions.InternalCall, _ 
      MethodCodeType:=MethodCodeType.Runtime)> _ 
     Sub BindAsLegacyV2Runtime() 
    End Interface 
End Class 

Пожалуйста, обратите внимание, что я не придумал этот код - я, возможно, даже нашел на этом сайте, - но я не могу найти оригинальный вкладчик. Тем не менее, он работает для меня, поэтому вы можете попробовать.

Смежные вопросы