Hi,

The website that I have been working on for sometime is about to be deployed now.

However, after deployment the reports are not opening in one of the two machines that I have deployed. All other pages seem to be working fine except reports not opening with the error :

Invalid Class String
COM Exception: 0x80004005

(on the line :- CrystalReportEngine.Load(Server.MapPath(Session("ReportPath")))

These are the steps that I have taken so far:-

1> Installed Crystal repors for .net framework 2.0 from :-

C:\Program Files\Visual Studio 8\SDK\Bootstrapper\Packages\Crystal Reports

Also installed the following:-
1> IIS
2> .net fwk 2.0
3> sql server 2005


2> First Added references to the following dlls:-

CrystalDecisions.CrystalReports.Engine.dll
CrystalDecisions.ReportSource.dll
CrystalDecisions.Shared.dll
CrystalDecisions.Web.dll
CrystalDecisions.Windows.Forms.dll

(all these dlls were found in C:\Program Files\Common Files\Business Objects\2.7\Managed)

After adding these references the corresponding entries were made in webconfig and also found it in Project Propery pages under references as GAC.

Then copied these dlls to the bin.

3>Here is the complete web.config

<?xml version="1.0"?>
<!-- 
    Note: As an alternative to hand editing this file you can use the 
    web admin tool to configure settings for your application. Use
    the Website->Asp.Net Configuration option in Visual Studio.
    A full list of settings and comments can be found in 
    machine.config.comments usually located in 
    \Windows\Microsoft.Net\Framework\v2.x\Config 
-->
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
	<configSections>		
		<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
		<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
			<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
				<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
				<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
					<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
					<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
					<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
				</sectionGroup>
			</sectionGroup>
		</sectionGroup>
		<sectionGroup name="businessObjects">
			<sectionGroup name="crystalReports">				
				<section name="reportMappings" type="CrystalDecisions.Shared.ReportMappingHandler, CrystalDecisions.Shared, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, Custom=null"/>
			</sectionGroup>
		</sectionGroup>
	</configSections>
	<appSettings>
		<add key="CrystalImageCleaner-AutoStart" value="true"/>
		<add key="CrystalImageCleaner-Sleep" value="60000"/>
		<add key="CrystalImageCleaner-Age" value="120000"/>
	</appSettings>
	<connectionStrings>
		<remove name="LocalSqlServer"/>
		<add name="mhiconnection" connectionString="Data Source=MHI-E5EB93FB1F1;Initial Catalog=TAACS;Persist Security Info=True;User ID=sa;Password=mhillc"/>
		<add name="TAACSConnectionString" connectionString="Data Source=MHI-E5EB93FB1F1;Initial Catalog=TAACS;User ID=sa;Password=mhillc" providerName="System.Data.SqlClient"/>
		<add name="LocalSqlServer" connectionString="Data Source=MHI-E5EB93FB1F1;Initial Catalog=TAACS;Persist Security Info=True;User ID=sa;Password=mhillc"/>
		<add name="accessconnstr" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source= |DataDirectory|MHIAttendance.mdb" providerName="System.Data.OleDb"/>
	</connectionStrings>
	<system.web>
		<roleManager enabled="true"/>
		<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" uiCulture="en-GB"/>
		<!-- 
            Set compilation debug="true" to insert debugging 
            symbols into the compiled page. Because this 
            affects performance, set this value to true only 
            during development.

            Visual Basic options:
            Set strict="true" to disallow all data type conversions 
            where data loss can occur. 
            Set explicit="true" to force declaration of all variables.
        -->
		<authentication mode="Forms">
			<forms name=".ASPXFORMSDEMO" loginUrl="~/frmlogin.aspx" cookieless="UseCookies"/>
		</authentication>
		<authorization>
			<deny users="?"/>
		</authorization>		
		<compilation debug="true" strict="false" explicit="true">
			<assemblies>
				<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
				<add assembly="System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
				<add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
				<add assembly="Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"/>
				<add assembly="System.Management, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
				<add assembly="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
				<add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
				<add assembly="System.Configuration.Install, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
				<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
				<add assembly="CrystalDecisions.CrystalReports.Engine, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
				<add assembly="CrystalDecisions.ReportSource, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
				<add assembly="CrystalDecisions.Shared, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
				<add assembly="CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
				<add assembly="CrystalDecisions.Windows.Forms, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/></assemblies>
		</compilation>
		<pages>
			<namespaces>
				<clear/>
				<add namespace="System"/>
				<add namespace="System.Collections"/>
				<add namespace="System.Collections.Specialized"/>
				<add namespace="System.Configuration"/>
				<add namespace="System.Text"/>
				<add namespace="System.Text.RegularExpressions"/>
				<add namespace="System.Web"/>
				<add namespace="System.Web.Caching"/>
				<add namespace="System.Web.SessionState"/>
				<add namespace="System.Web.Security"/>
				<add namespace="System.Web.Profile"/>
				<add namespace="System.Web.UI"/>
				<add namespace="System.Web.UI.WebControls"/>
				<add namespace="System.Web.UI.WebControls.WebParts"/>
				<add namespace="System.Web.UI.HtmlControls"/>
			</namespaces>
			<controls>
				<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
			</controls>
		</pages>
		<!--
            The <authentication> section enables configuration 
            of the security authentication mode used by 
            ASP.NET to identify an incoming user. 
        -->
		<!--
            The <customErrors> section enables configuration 
            of what to do if/when an unhandled error occurs 
            during the execution of a request. Specifically, 
            it enables developers to configure html error pages 
            to be displayed in place of a error stack trace.

        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            <error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>
        -->
		<httpHandlers>		
			<add verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
			<remove verb="*" path="*.asmx"/>
			<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
			<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
			<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
		</httpHandlers>
		<httpModules>			
			<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
		</httpModules>
	</system.web>
	<system.codedom>
		<compilers>
		</compilers>
	</system.codedom>
	<system.webServer>
		<validation validateIntegratedModeConfiguration="false"/>
		<modules>
			<remove name="ScriptModule"/>
			<add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
		</modules>
		<handlers>
			<remove name="WebServiceHandlerFactory-Integrated"/>
			<remove name="ScriptHandlerFactory"/>
			<remove name="ScriptHandlerFactoryAppServices"/>
			<remove name="ScriptResource"/>
			<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
			<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
			<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
		</handlers>
	</system.webServer>
	<runtime>
	</runtime>
	<businessObjects>
		<crystalReports>
			<reportMappings>
				<add reportName="prtempdetails.rpt" path="prtempdetails.rpt"/><add reportName="Rptabsent.rpt" path="Rptabsent.rpt"/><add reportName="Rptattendance.rpt" path="Rptattendance.rpt"/><add reportName="Rptattendancedetails.rpt" path="Rptattendancedetails.rpt"/><add reportName="Rptearly.rpt" path="Rptearly.rpt"/><add reportName="rptemplist.rpt" path="rptemplist.rpt"/><add reportName="Rptlate.rpt" path="Rptlate.rpt"/><add reportName="rptleave.rpt" path="rptleave.rpt"/><add reportName="rptotdetails.rpt" path="rptotdetails.rpt"/><add reportName="rptotsummary.rpt" path="rptotsummary.rpt"/><add reportName="test.rpt" path="test.rpt"/>
			</reportMappings>
		</crystalReports>
	</businessObjects>
</configuration>

4>Ran the aspnet_regiis.exe -i from command line

5>I have created a websetup project to install this website on server.

6> I tried installing Crystal Reports from Vs-2005 CD and also tried installing complete VS-2005 without SQL Express and the issue is still there.

7> I have also tried setting the datasource for the report files using the OLEDB provider for SQL-Server in Crystal reports and the issue is still there.

8> Is it necessary that I install full Crystal Reports 10 on the server? In that case will I have to install Crystal Reports 10.2,10.0 or 10.5 ?

9> Next I am planning to create a new website on that computer in VS-2005 and check if any reports in the newly created website show in the CrystalReportViewer control

10> I would also like to inform you that I was not able to install MDAC 2.8 on the computer. It said installer doesn't support this OS (i was using Win XP SP-2)

In the meantime I would like to know your advice and suggestions for resolving this issue.

Hi,

I tried few more steps but no luck.

1> Created a new 'ASP.NET Crystal Report website' in the Computer with the issue. On running the reports worked fine. However, when I deployed this to the IIS on the same Computer, reports failed with the same error: Invalid Class String, COM Exception:0x80004005

2> Add merge module 'CrystalReport10_NET_EmbeddedReporting.msm' as per the instructions in the downloaded file from the Business Objects website but the issue is still there (http://websmp130.sap-ag.de/sap%28bD1lbiZjPTAwMQ==%29/bc/bsp/spn/bobj_download/main.htm)

3> I found this link at msdn site :- (http://ironspeed.com/Designer/3.2.4/WebHelp/Part_V/Load_Report_Failed.htm)

It says :- Make sure the ASPNET account has permissions to open the file. Make sure the folder containing the file and the file itself has the same permissions as your application folder.

So I right clicked the report files in IIS, selected Properties, File Security and found that the 'IUSR-ComputerName' is configured for anonymous access as well as the Integrated Windows Authentication is checked.

Then as per the instructions here set the anonymous access for the ComputerName\ASPNET account leaving the IntegratedWindowsAuthentication checkbox checked and the issue is still there. I am quite sure that the report paths are correct and I haveupdated the DataSource location for the reports from Visual Studio.

Tomorrow I need to go through the other links as well but in the meantime if someone has more ideas please let me know as it will save precious time.
Thanks in advance

Finally resolved this issue by using 'Impersonation'

<system.web>
<identity impersonate="true" userName="DOMAIN\username" password="mypass"/>
</system.web>

If you want to lookup the domain for confirmation go to IIS (wrt IIS 5.1 that comes with Windows XP SP2),
1> right click your website select properties,
2> then Directory security tab,
3>then in anonymous access click edit,
4>then click advanced to search for users
5>then click Find Now

From the list of users you will be able to find the account that you use to login, the domain is the Directory.

HAPPY CODING !!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.