If an error occurred in report processing, ASP.NET Web Forms Report writer ReportErrorOccurred event raised. You can register the event and get the report error details from the event arguments to save all logs, stack trace, and error information into a physical file location.
This section explains how to log the detailed error information to your ASP.NET Web Forms application.
This section requires an ASP.NET Web Forms Report Writer application, if you don’t have, then create by referring to the Getting-Started documentation.
In Solution Explorer, open the Default.aspx.cs file.
Add the following sample code to register the report errors in the ReportErrorOccurred event.
protected void ExportButton_Click(object sender, EventArgs e)
{
BoldReports.Writer.ReportWriter writer = new BoldReports.Writer.ReportWriter();
writer.ReportErrorOccurred += Writer_ReportErrorOccurred;
}
private void Writer_ReportErrorOccurred(object sender, ReportErrorOccurredEventArgs e)
{
// You can register the report errors using event arguments.
}Create a method in Default.aspx.cs to write the error text into application folder.
private void WriteLogs(string errorMessage)
{
string filePath = Path.Combine(writer.ReportPath, "ErrorDetails.txt");
using (StreamWriter writer = new StreamWriter(filePath, true))
{
writer.AutoFlush = true;
writer.WriteLine(errorMessage);
}
}Invoke the newly created function in ReportErrorOccurred as follows.
private void Writer_ReportErrorOccurred(object sender, ReportErrorOccurredEventArgs e)
{
WriteLogs(string.Format("Class Name: {0} \n Method Name: {1} \n Error Message: {2}", e.ClassName, e.MethodName, e.Message));
}In cases of any issues faced in the report rendering, share the log file to our technical support team to get assistance on that.
The final event is given as follows, you can replace it in your application.
protected void ExportButton_Click(object sender, EventArgs e)
{
// Here, we have loaded the sales-order-detail sample report from application the folder Resources.
FileStream reportStream = new FileStream(Server.MapPath("~/Resources/sales-order-detail.rdl"), FileMode.Open, FileAccess.Read);
BoldReports.Writer.ReportWriter writer = new BoldReports.Writer.ReportWriter();
writer.ReportErrorOccurred += Writer_ReportErrorOccurred;
string fileName = null;
WriterFormat format;
string type = null;
if (this.ExportFormat.SelectedValue == "PDF")
{
fileName = "sales-order-detail.pdf";
format = WriterFormat.PDF;
}
else if (this.ExportFormat.SelectedValue == "Word")
{
fileName = "sales-order-detail.docx";
format = WriterFormat.Word;
}
else if (this.ExportFormat.SelectedValue == "Html")
{
fileName = "sales-order-detail.Html";
format = WriterFormat.HTML;
}
else if (this.ExportFormat.SelectedValue == "PPT")
{
fileName = "sales-order-detail.ppt";
format = WriterFormat.PPT;
}
else
{
fileName = "sales-order-detail.xlsx";
format = WriterFormat.Excel;
}
writer.LoadReport(reportStream);
HttpContext httpContext = System.Web.HttpContext.Current;
writer.Save(fileName, format, httpContext.Response);
}
}
private void Writer_ReportErrorOccurred(object sender, ReportErrorOccurredEventArgs e)
{
WriteLogs(string.Format("Class Name: {0} \n Method Name: {1} \n Error Message: {2}", e.ClassName, e.MethodName, e.Message));
}
private void WriteLogs(string errorMessage)
{
string filePath = Path.Combine(Server.MapPath("~/Resources/ErrorDetails.txt"));
using (StreamWriter writer = new StreamWriter(filePath, true))
{
writer.AutoFlush = true;
writer.WriteLine(errorMessage);
}
}