C# HTTPResponse响应是否存在于.NETCore3.1中
我正在尝试将数据从asp.net核心Web应用程序(Blazor)导出到excel文件。Excel文件必须显示在浏览器中,由用户下载 根据我使用的所有示例,响应:C# HTTPResponse响应是否存在于.NETCore3.1中,c#,asp.net-core,blazor,C#,Asp.net Core,Blazor,我正在尝试将数据从asp.net核心Web应用程序(Blazor)导出到excel文件。Excel文件必须显示在浏览器中,由用户下载 根据我使用的所有示例,响应: using System; using System.IO; using ClosedXML.Excel; using System.Data; using System.Web; using Microsoft.AspNetCore.Http; namespace Sxxx { public class Exporter
using System;
using System.IO;
using ClosedXML.Excel;
using System.Data;
using System.Web;
using Microsoft.AspNetCore.Http;
namespace Sxxx
{
public class Exporter
{
public void Export()
{
using (IXLWorkbook wb = new XLWorkbook())
{
IXLWorksheet ws = wb.Worksheets.Add("Sample Sheet");
ws.Cell(1, 1).Value = "Hello World!";
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=SqlExport.xlsx");
using (MemoryStream MyMemoryStream = new MemoryStream())
{
wb.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(Response.OutputStream);
Response.Flush();
Response.End();
}
}
}
}
然而,这一反应并未得到认可。VS2019显示缺少的程序集是“Ubiety.Dns.Core”,但这似乎不正确
在docs.microsoft.com中,HTTPresponse仅作为framework4.8的一部分出现,因此我的问题是:我可以在这里使用Response,还是我需要为核心3.1项目提供其他功能
提前感谢我确实按照马可和诺亚的建议创建了一个控制器,非常感谢。我确实学到了很多。。。响应继承自ControllerBase。web上的大多数示例都是针对.NETFramework4.8的,因此在Core3.1中这样做有点令人费解,但这里就是。改进建议更受欢迎
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.IO;
using ClosedXML.Excel;
namespace Sxxx.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class DownLoadController : ControllerBase
{
private readonly IWebHostEnvironment environment;
public DownLoadController(IWebHostEnvironment environment)
{
this.environment = environment;
}
[HttpGet("[action]")]
public async Task DownLoadFile()
{
IXLWorkbook wb = new XLWorkbook();
IXLWorksheet ws = wb.Worksheets.Add("Sample Sheet");
ws.Cell(1, 1).Value = "Hello World!";
MemoryStream ms = new MemoryStream();
wb.SaveAs(ms);
byte[] result = ms.ToArray();
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.Headers.Add("Content-Disposition", "attachment; filename=somefile.xlsx");
await Response.Body.WriteAsync(result);
await Response.StartAsync();
}
}
}
什么是
响应
?据我所知,在代码中的任何地方都没有实例化它。您是否尝试创建HttpResponseMessage
?在这样的.NET项目中,您根本不会在任何地方免费获得响应!您可能在继承自Controller
的类中获得它(不确定在Core中是否正确)。这是否回答了您的问题?请提供可复制的最小值example@ADBF您始终可以创建一个控制器,返回一个FileResult,并以这种方式进行求解。