簡體   English   中英

HTTPResponse 響應是否存在於 .NET Core 3.1 中

[英]does HTTPResponse Response exist in .NET Core 3.1

我正在嘗試將數據從 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
    {
        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();
                }
            }
                       
        }
    }

但是無法識別響應。 VS 2019 顯示的缺失程序集是“Ubiety.Dns.Core”,但這似乎不對。

在 docs.microsoft.com HTTPresponse 僅顯示為 Framework 4.8 的一部分,所以我的問題是:我可以在這里使用 Response 還是我需要其他東西用於 Core 3.1 項目?

提前致謝

我確實按照 Marco 和 Noah 的建議創建了 Controller,非常感謝。 我確實學到了很多……響應繼承自 ControllerBase。 web 上的大多數示例都是針對 .Net Framework 4.8 的,所以為核心 3.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();
                  
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM