ASP.NET CORE 8 FILESTREAMRESULT не отправляет байты ⇐ C#

Место общения программистов C#
Anonymous
ASP.NET CORE 8 FILESTREAMRESULT не отправляет байты

Сообщение Anonymous »

Моя проблема началась вчера, когда я пытался получить приложение ASP.NET Core 8 для отправки файла обратно клиенту (через задачу < /code> Метод возврата FileStreamResult < /code>) и встретил очень интересную ошибку: < /p>

Неудача: Microsoft.aspneplecrore. Korestraver. /> Идентификатор соединения "0HNCVO92UT954", ID запроса "0HNCVO92UT954: 00000003":

Незаглафное исключение было добавлено применением.

system.invalidoperationExcepcte: Maniscation: Manscate: слишком мало. /> < /blockquote>
Я вижу проблему, в которой вообще не отправляются байты, а не просто несоответствие.

Код: Выделить всё

public class MainController : Controller
{
private readonly ILogger _logger;

public MainController(ILogger logger)
{
_logger = logger;
}

[HttpGet]
[Route("api/{unitControlNumber}/{startDate}/{endDate}")]
public async Task RecordsExport(Guid? unitControlNumber, DateTime? startDate, DateTime? endDate)
{
// create a memory stream and fill it with some random data
Stream stream = new MemoryStream();
byte[] thingBytes = {1,2,3,4,5,6,7,8};
stream.Write(thingBytes, 0, thingBytes.Length);

// I saw a question once where someone recommended to do this but I'm not sure if this is necessary or even helpful (I know it dumps the buffer contents into the actual stream, I'm just not aware of what is contained in the buffers or why there would be data left there to dump in the first place (dump most likely being incorrect terminology))
stream.Flush();

// - - send the excel file (now just some bytes)
// I've tried using "application/txt" as well for the file format but it did not work either
FileStreamResult file = new FileStreamResult(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
file.FileDownloadName = "Board_Data_For_Unit-" + unitControlNumber + "__Start-" + startDate + "__End-" + endDate;
file.EnableRangeProcessing = false;
Console.WriteLine("Can seek? " + stream.CanSeek);
Console.WriteLine(stream.ToString());

return file;
}
}
Вот как моя программа.using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.SqlServer;
using VPN_Website_New.Models;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews();

// Build the application!
var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}

app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
name: "default",
pattern: "{action=Index}/{id?}");

app.Run();
< /code>
Когда я запускаю веб -сайт с точками останова, я вижу, что поток памяти в приведенном выше коде на самом деле заполнен необходимыми данными (8 байтов данных). < /p>
Это не выглядит так, как будто это проблема с моим кодом, так что какая проблема может быть? Из моих предположений это может быть исходный код ASP.NET (который после просмотра он выглядит нормально, так что это не так) или что -то в этом роде с моей настройкой программы. CS. Это также может быть уникальной ошибкой, которую испытывает эта конкретная машина и версия ASP.NET. Говоря об этом, моя основная версия ASP.NET - 8.0.16, я в настоящее время использую это с Visual Studio 2022 IIS, и я на Windows 11.

Подробнее здесь: https://stackoverflow.com/questions/796 ... ding-bytes

Вернуться в «C#»