为什么我的基本 .Net 7 Razorpage 应用在使用 PhysicalFile 下载文件时退出?

Why does my basic .Net 7 Razorpage app exit when downloading a file using PhysicalFile?

提问人:Brian Jaikens 提问时间:10/19/2023 更新时间:10/19/2023 访问量:9

问:

我正在尝试使用 Visual Studio 2022 和 c# 中的 .net 7 下载一个简单的文本文件。但是,当文件下载时,应用程序会退出。它为什么要这样做?

我使用 Visual Studio 2022 创建了一个应用。不是预览版。我使用的是 .Net 7,没有身份验证。我在“wwwroot”文件夹中创建了一个名为“tempfiles”的文件夹,该文件夹中有一个名为“test.txt”的文本文件,其中包含“测试文件”字样。

我在“Index.cshtml”中有以下内容。

@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}

<div class="text-center">
    <h1 class="display-4">Welcome</h1>

    <form method="post" asp-page="/Index">
        <button type="submit" class="btn btn-primary" asp-page-handler="DownloadFile">Test Download</button>
    </form>

</div>

在文件“Index.cshtml.cs”中是。

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace Basic_Web_App.Pages
{
    public class IndexModel : PageModel
    {
        private readonly ILogger<IndexModel> _logger;
        private readonly IWebHostEnvironment _environment;

        public IndexModel(ILogger<IndexModel> logger,
            IWebHostEnvironment environment)
        {
            _logger = logger;
            _environment = environment;
        }

        public void OnGet()
        {

        }

        public IActionResult OnPostDownloadFile()
        {
            const string testFile = "test.txt";
            string rootPath = _environment.WebRootPath + "\\tempfiles\\";

            string filePath = System.IO.Path.Combine(rootPath, testFile);

            return PhysicalFile(filePath, "text/plain", testFile);
        }
    }
}

我运行该应用程序并单击下载按钮。它下载文件,浏览器询问我想要什么文件名,并建议“test.txt”。一个我选择好的。该文件已添加到我的下载中。但问题是应用程序退出了。在控制台中,未报告错误。只是应用程序已以 -1 退出。为什么应用程序会关闭?

C# asp.net 退出

评论

0赞 Brian Jaikens 10/19/2023
我已在此处的 GitHub 存储库中放置了项目文件的副本。
0赞 Brian Jaikens 10/19/2023
所以我设法回答了我自己的问题。问题出在浏览器上。我最近改用了 Brave。当我指定另一个浏览器(Chrome、Duck Duck Go、Firefox)时,除了 Brave 之外,几乎任何东西。它就像它应该的那样工作。所以问题在于 Brave 和 Visual Studio 2022 相互通信的方式。他们不好。所以我坚持在 Chrome 上开发。唷!

答: 暂无答案