Symptom
Certain functionality of previewing Crystal Reports across VRL attempts to write temp files to C:\Windows\Temp with a naming scheme of tmpXXXX.tmp where the Xs are four hexadecimal characters limiting the number of files to 65,536. Errors are encountered when the number of tmpXXXX.tmp files reaches 65,535 until these temp files are manually deleted.
Calls to the ReportDocument object's ExportToHttpResponse create the .tmp file. After it is created calling the .Close() and/or the .Dipose() method on the object fails to remove the file in C:\Windows\Temp.
The file is also owned by a process and cannot be removed programmatically afterwards unless we restart the VRLCrystal process entirely.
Calling Response.End() on the response that is sending the report back over the wire does not release the object from the process either.
Environment
Crystal Reports for Visual Studio
Reproducing the Issue
Simple test app:
protected void Page_Init(object sender, EventArgs e)
{
ExportToResponse(CrystalReportSource1.ReportDocument);
}
private void ExportToResponse(ReportDocument report)
{
try
{
var exportOptions = new ExportOptions
{
ExportFormatType = ExportFormatType.PortableDocFormat,
ExportFormatOptions = new PdfFormatOptions
{
FirstPageNumber = 1,
LastPageNumber = 1,
UsePageRange = true,
CreateBookmarksFromGroupTree = true
}
};
report.ExportToHttpResponse(exportOptions, Response, true, Path.GetFileNameWithoutExtension(report.FileName));
}
catch (Exception e)
{
throw e;
}
finally
{
report.Close();
}
}
Cause
The cause is noted in this article: https://stackoverflow.com/questions/2041482/unable-to-evaluate-expression-because-the-code-is-optimized-or-a-native-frame-is
Resolution
The issue has been escalated to R&D to possibly find a solution in SP 30
In the mean time you can add this to handle the internal exception:
finally{ Response.Flush(); Response.SuppressContent = true; var httpContext = HttpContext.Current; httpContext.ApplicationInstance.CompleteRequest();}
Keywords
CR for VS, ExportToHttpResponse, .NET, TMP , KBA , BI-DEV-NET , BI Software Development Kits (SDKs) - .NET or Other , Problem