尝试在ReportViewer中显示时出现cod 500内部服务器错误

时间:2016-03-18 09:13:30

标签: asp.net web asp.net-web-api

我正在尝试从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;

0 个答案:

没有答案