У меня есть приложение, которое генерирует довольно простые отчеты. Я установил Crystal Reports .Net 4 beta 2 для Visual Studio 2010 и скопировал библиотеки DLL в папку bin моего веб-сайта. Все работает нормально при локальном запуске, но когда я пытаюсь создать отчет на своем производственном сервере, я получаю следующее исключение.
Retrieving the COM class factory for component with CLSID
{C0D87D96-8D57-4274-AA18-D465E31F901E} failed due to the following error:
80040154 Class not registered (Exception from HRESULT: 0x80040154
(REGDB_E_CLASSNOTREG)).
А вот трассировка стека:
[COMException (0x80040154): Retrieving the COM class factory for component with CLSID
{C0D87D96-8D57-4274-AA18-D465E31F901E} failed due to the following error: 80040154
Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).]
CrystalDecisions.CrystalReports.Engine.ReportDocument..cctor() +141
[TypeInitializationException: The type initializer for
'CrystalDecisions.CrystalReports.Engine.ReportDocument' threw an exception.]
CrystalDecisions.CrystalReports.Engine.ReportDocument..ctor() +0
view_report.UpdateReport(Object sender, EventArgs e) +120
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
Я не очень много сделал с отчетами Crystal, поэтому, может быть, чего-то мне не хватает, но мне пришлось вручную скопировать библиотеки DLL из моего GAC в папку bin моего приложения, поскольку я не хотел запускать установщик на производство. Все работало локально, когда я удалил dll-загрузки из моего web.config, так что мой сайт будет искать в Bin любые дополнительные dll, но я не знаю, почему это происходит неправильно.
У кого-нибудь есть понимание?
EDIT:
Я также установил среду выполнения для развертывания на сервере, чтобы проверить, не является ли это проблемой.