报表查看器和Web Api

问题描述 投票:0回答:1

在MVC中,我可以生成.xsl或.pdf文件而不会出现File()问题,但是当使用web Api时,触发操作时不会发生任何事情!这是我到目前为止所尝试的。

我在这里尝试了几个解决方案,包括这个Web API and report viewer ,但没有任何对我有用。

 public HttpResponseMessage Export(ExportVolunteerSearchFilter searchModel)
    {

        if (searchModel.Equals(null))
        {
            return Request.CreateResponse(HttpStatusCode.BadRequest);

        }

        var volunteers = _volunteersService.ExportAllVolunteersData(searchModel);
        ReportViewer ReportViewer1 = new ReportViewer();
            ReportViewer1.SizeToReportContent = true;
            ReportViewer1.LocalReport.ReportPath =

                System.Web.HttpContext.Current.Server.MapPath("~/Reports/VolunteersReport.rdlc"); 

        ReportViewer1.LocalReport.EnableExternalImages = true;
            ReportViewer1.LocalReport.DataSources.Clear();
            ReportDataSource _rsource = new ReportDataSource("DataSet1", volunteers);
            ReportViewer1.LocalReport.DataSources.Add(_rsource);
            ReportViewer1.LocalReport.Refresh();
        Warning[] warnings;
        string[] streamIds;
        string mimeType = string.Empty;
        string encoding = string.Empty;
        string extension = string.Empty;
        string fileName = "reportVolunteer";


        HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);

        var stream = new FileStream(System.Web.HttpContext.Current.Server.MapPath("~/Reports/VolunteersReport.rdlc"), FileMode.Open);
        response.Content = new StreamContent(stream);
        response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
        response.Content.Headers.ContentDisposition.FileName = fileName;
        response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/xls");

        return response;

    }
asp.net-web-api2 rdlc reportviewer
1个回答
-1
投票

我这样做了: -

response.Content = new PushStreamContent(
 async (outstream) =>
{
  await getDataMethod(outstream)
},
 new MediaTypeHeadrerValue(mediaType:"application/xls"));

response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = $"test.xls"
            };
return response;
© www.soinside.com 2019 - 2024. All rights reserved.