Link to home
Start Free TrialLog in
Avatar of MichelBord
MichelBord

asked on

Export report to PDF in ASP.NET - Logon Failed.

Hi

I have been all over the web looking for an answer to my problem and none of the solutions seem to be exactly right for my situation.

Scenario:
ASP.NET page using C#
I have a Crystal report that connects to an XML file (That is the Database Type is "ADO.NET (XML)".

The .aspx file is essentially empty (as created by VS.NET2003).
In the codebehind page, I have the following code:

private void Page_Load(object sender, System.EventArgs e)
{
      ReportDocument crReportDocument = new ReportDocument();
      ExportOptions crExportOptions = new ExportOptions();
      DiskFileDestinationOptions crDiskFileDestinationOptions = new DiskFileDestinationOptions();
      String Fname = "";

      crReportDocument.Load(Server.MapPat("PhoneList.rpt"),CrystalDecisions.Shared.OpenReportMethod.OpenReportByTempCopy);
      Fname = "c:\\TEMP\\" + Session.SessionID.ToString() + ".pdf";
      crDiskFileDestinationOptions.DiskFileName = Fname;
      crExportOptions = crReportDocument.ExportOptions;
            
      crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
      crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
      crExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;

      crReportDocument.Export();

      Response.ClearContent();
      Response.ClearHeaders();
      Response.ContentType = "application/pdf";
      Response.WriteFile(Fname);
      Response.Flush();
      Response.Close();

      System.IO.File.Delete(Fname);
}

This is the only code in the ASPX page (codebehind).

When I run this page on my dev machine, everything looks good.

When create a setup projet and deploy it to my server, I get the good old "Logon failed" error:

Exception Details: CrystalDecisions.CrystalReports.Engine.LogOnException: Logon failed.

Things I have tried:

1.  Changing the machine.config ProcessModel username and restarting IIS
2.  Making sure that the setup projet has the following merge modules
      - Crystal_Database_Access2003.msm
      - Crystal_Database_Access2003_enu.msm
      - Crystal_Managed2003.msm
      - Crystal_regwiz2003.msm (including the key)
      - VC_User_CRT71_RTL_x86_---.msm
      - VC_User_STL71_RTL_x86_---.msm
4.  Giving ASPNET read/write access to the app folder as well as the C:\Temp folder used to export the PDF.

Many solutions talk about adding proper credentials using code similar to this:

TableLogOnInfo crLogonInfo = new TableLogOnInfo();
crLogonInfo = crReportDocument.Database.Tables[0].LogOnInfo;
crLogonInfo.ConnectionInfo.ServerName = "myServer";
crLogonInfo.ConnectionInfo.UserID = "sa";
crLogonInfo.ConnectionInfo.Password = "sa";
crLogonInfo.ConnectionInfo.DatabaseName = "?";
crReportDocument.Database.Tables[0].ApplyLogOnInfo(crLogonInfo);

However, since I am using an XML file for my datasource, I do not know what to use for username and password, as well as Server and DatabaseName.

Since this works fine on my local workstation I'm guessing that files are still missing in the setup... any help would be greatly appreciated!

Michel
Avatar of Mike McCracken
Mike McCracken

What version and edition of Crystal?

What edition of VS.Net 2003?

mlmcc
Avatar of MichelBord

ASKER

Hmm, sorry about that.  I did mean to include those details. :)

Visual Studio.Net 2003 - Professional edition
  Microsoft Development Environment 2003 - v7.1.3088
  Microsoft .NET Framework 1.1 - v.1.1.4322 (both on client and server)
Crystal Reports for Visual Studio .NET (bundled w/ VS.NET2003 Pro)

Thanks

Michel

Can anyone help with this... we are still stuck!
Thanks mlmcc,

 Unfortunately, this doesn't help.  The sample did lead me to try using the Report Object instead but that still has the same issue.

I have seen tried a few other options.  The following is my most recent code... the big difference is that I use ExportToStream so I don't need to write the PDF file to disk first.  This removes a variable.

ReportDocument crReportDocument = new ReportDocument();
crReportDocument.Load(Server.MapPath("BIPhoneList.rpt"));
System.IO.Stream st;
st = crReportDocument.ExportToStream(ExportFormatType.PortableDocFormat);

Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/PDF";
byte[] b = new byte[st.Length];
st.Read(b,0,(int) st.Length);
Response.BinaryWrite(b);
Response.Flush();
Response.Close();
ASKER CERTIFIED SOLUTION
Avatar of MichelBord
MichelBord

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Submit a request to PAQ this question in the Community Support TA

mlmcc