Rapport Crystal à l'index non Valide. (Exception de HRESULT: 0x8002000B (DISP_E_BADINDEX))

J'ai fait un rapport crystal dans asp.net pour l'application web. Certains ont ouvert bien. Mais parfois il ne le fait pas. Il montre le problème suivant.

Index non valide. (Exception de HRESULT: 0x8002000B (DISP_E_BADINDEX))

Description: Une exception non gérée s'est produite pendant l'exécution de la demande web actuelle. Veuillez consulter la trace de la pile pour plus d'informations sur l'erreur et où elle a son origine dans le code.

Détails De L'Exception: System.Moment de l'exécution.InteropServices.COMException: index non Valide. (Exception de HRESULT: 0x8002000B (DISP_E_BADINDEX))

Source De L'Erreur:
Une exception non gérée s'est produite lors de l'exécution de la demande web actuelle. Informations concernant l'origine et l'emplacement de l'exception peut être identifié à l'aide de la trace de pile d'exception ci-dessous.

Trace De La Pile:
[COMException (0x8002000b): index non Valide. (Exception de HRESULT: 0x8002000B (DISP_E_BADINDEX))]

Report_Viewer.Page_Load(Object sender, EventArgs e) +894

Système.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, l'Objet o, t Objet, EventArgs e) +14

Système.Web.Util.CalliEventHandlerDelegateProxy.Rappel(Object sender, EventArgs e) +35

Système.Web.L'INTERFACE utilisateur.De contrôle.OnLoad(EventArgs e) +99

Système.Web.L'INTERFACE utilisateur.De contrôle.LoadRecursive() +50

Système.Web.L'INTERFACE utilisateur.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

Informations De Version: Microsoft .NET Framework Version:2.0.50727.4927; ASP.NET Version:2.0.50727.4927

Mon VS: VS 2008, la Base de données:MS SQL Express 2005, OS:Windows 7

Est-il un résoudre mon problème..

NB: Mon code est dans une Classe

public ReportDocument ShowReport(string ReportName, string Parameter1)
{                              
    try
    {
        cryRpt.Load(ReportName);            
        cryRpt.SetDatabaseLogon(UserName, Password, ServerName, DatabaseName);                                    
        crParameterValues.Clear();
        crParameterDiscreteValue.Value = Parameter1;//as like Parameter1
        crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
        crParameterFieldDefinition = crParameterFieldDefinitions["@Parameter1"];
        crParameterValues = crParameterFieldDefinition.CurrentValues;
        crParameterValues.Add(crParameterDiscreteValue);
        crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);
    }
    catch (Exception ex)
    {
       throw ex;
       //ShowReport(@"default_report.rpt");
    }
    //CleareParameter();
    return cryRpt;
}

De la Visionneuse de rapports de chargement de la Page

protected void Page_Load(object sender, EventArgs e)
{
    string ReportName="";
    string Parameter1="";
    ReportName= Session["ReportName "].ToString();
    Parameter1 = Session["Parameter1"].ToString();
    }
    try
    {
        if (Session["Parameter2"].ToString() != null)
        {
            Parameter2 = Session["Parameter2"].ToString();
            icount = icount + 1;
        }
    }
    catch (Exception ) { }
    ReportViewer oReportViewer = new ReportViewer(); //Class file
    ReportDocument rptDoc = new ReportDocument();
    try
    {
        rptDoc = oReportViewer.ShowReport(ReportName, Parameter1);
        rptDoc = oReportViewer.ShowReport(ReportName, Parameter1, 
        rptDoc.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, false, "Report");
        CrystalReportViewer1.ReportSource = rptDoc;
    }
    catch (Exception ex)
    {  
       throw ex;
    }       
}