【发布时间】:2017-10-15 08:09:05
【问题描述】:
我无法在 .net core 1.1 中触发以下代码。它正在从服务器导出 SSRS 报告,并返回 FileResult 类型。我正在转换为 FileContentResult,然后转换为 memorystream,然后转换为 bytearray。该文件已生成,但 response.content 仅具有包含正确设置的内容长度标头的标头,但没有 bytearray 内容本身。这总是空的。正在使用 axios 从 Vue.JS 应用程序将内容检索到 .net 核心。
[HttpPost, Route("GetDailyInstitution")]
public HttpResponseMessage GetDailyInstitution([FromBody]
ReportViewModels.DailyReportInst mydata)
{
HttpResponseMessage response = new HttpResponseMessage();
var model = this.GetReportViewerModel(Request);
var mdate = mydata.mydate;
model.ReportPath = "/xxxxx/xxxx/xxxx";
model.AddParameter("InstitutionID",
mydata.InstitutionID.ToString());
model.AddParameter("DayDate", mdate.ToString("dd/MM/yyyy"));
model.ViewMode = AlanJuden.MvcReportViewer.ReportViewModes.Export;
byte[] bytes;
MemoryStream mstream = new MemoryStream();
FileResult myfile = null;
FileContentResult myfilecontent = null;
switch (mydata.mytype)
{
case "pdfMe":
myfile = ExportReport("xxxxxx/xxxxxxxx/xxxx", "PDF");
myfilecontent = (FileContentResult)myfile;
bytes = myfilecontent.FileContents;
mstream.Write(bytes, 0, bytes.Length);
response.Content = new ByteArrayContent(mstream.ToArray());
response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
break;
}
return response;
}
我认为问题出在它设置 response.content 或可能是 ms.toarray() 调用的区域,因为它确实会导致 readcount 和 writecount 异常警告,但我也读过这是故意的微软出于某种原因。
【问题讨论】:
-
你能把代码放在它的实际方法和控制器中吗?这样就可以更好地理解了。
-
感谢您的评论。其实我今晚刚刚解决了这个问题。我会在一秒钟内发布答案。不过你是对的,我会添加额外的代码。
标签: c# reporting-services asp.net-core memorystream