我正在尝试从web api生成服务器报告为pdf。我使用的是Microsoft ReportViewer 11.0。我在下面得到错误。报告页面显示空白,VS中没有显示任何错误。但在Fiddler,它响应内部服务器(500代码)。 it completely write to local pdf file
I get error like this when try to display report. Plz help me guys 这是我的代码
re.ServerReport.ReportServerUrl = new System.Uri(pReportURL);
re.ServerReport.ReportPath = ReportPath;
re.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote;
IReportServerCredentials irc = new ReportServerCredentials(pReportUserName, ReportPAssword, pReportURL);
re.ServerReport.ReportServerCredentials = irc;
Int32 i = 0;
ReportParameter[] rptParm = new ReportParameter[hdParam.Count];
if (rptParm != null)
{
foreach (DictionaryEntry index in hdParam)
{
if (i <= hdParam.Count)
{
rptParm[i] = new ReportParameter(index.Key.ToString(), index.Value.ToString());
i = i + 1;
}
}
re.ServerReport.SetParameters(rptParm);
}
Warning[] warnings;
string[] streamids;
string mimeType;
string encoding;
string extension;
re.ServerReport.DisplayName = ReportPath;
byte[] data = re.ServerReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings);
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ContentType = "application/pdf";
System.Web.HttpContext.Current.Response.Write(data);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.End();
Stream ms = new MemoryStream(data);
System.Web.HttpContext.Current.Response.Buffer = true;
//ms.WriteTo(System.Web.HttpContext.Current.Response.OutputStream);
File.WriteAllBytes(@"C:\testpdf.pdf", data);
var result = Request.CreateResponse(HttpStatusCode.OK);
result.Content = new StreamContent(ms);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("PrintOut_Finance_Inv/pdf");
return result;