当我在 Visual Studio/IIS 中运行时在客户端应用程序上使用文件保护程序时,为什么我的 .Net Core 3.1 API/SPA 突然停止?

问题描述

我有一个奇怪的问题,与使用 .Net Core 3.1 Web API 运行 React 前端有关。我使用 Visual Studio 模板创建了应用程序,因此客户端应用程序存在于我的 .Net Core 项目中,并在我启动 API 时启动。

我有一个 API 端点,它通过 FileStreamResult 返回一个文本/csv 文件,然后我使用 npm 包 file-saver 允许客户端将文件保存在前端。该文件正在成功返回并保存,但是每次我从客户端应用程序运行 saveAs 函数时,API 在 Visual Studio 上的 IIS 中运行时都会关闭它只是停止。日志中没有任何内容,尽管我已将它们设置为详细信息。它显示 API 被命中并返回响应,但没有其他内容。我还搜索了事件日志,但在关闭时找不到任何错误。它始终如一地发生。如果我不保存文件,API 不会关闭,但一旦我保存文件,它就会关闭

如果我使用“dotnet run”从 Powershell 运行 API,则会成功返回并保存文件,并且 API 不会关闭。我觉得这可能是 IIS 配置问题,但我不确定如何解决

我正在运行 Visual Studio Community 2019 版本 16.10.2 和 .Net Framework 版本 4.8.04084

我的 Startup.cs 中运行 React 应用程序的代码

app.UseSpa(spa => 
    { spa.Options.sourcePath = "ClientApp"; 

      if (env.IsDevelopment()) 
      { 
        spa.UseProxyToSpaDevelopmentServer("http://localhost:3000"); 
      } 
    });

和我检索和保存文件的前端代码看起来像

try {
    const response = await fetch(URL,options);
    const file = await response.blob();
    saveAs(file,fileName);
} catch (err) {
    ...
}

还有我的日志:

{"Timestamp":"2021-07-22T08:50:58.9565584-05:00","Level":"information","MessageTemplate":"Executing endpoint '{EndpointName}'","RenderedMessage":"Executing endpoint '\"CommissionDatabase.WebApp.Controllers.ExportController.GetAICommissionExport (CommissionDatabase.WebApp)\"'","Properties":{"EndpointName":"CommissionDatabase.WebApp.Controllers.ExportController.GetAICommissionExport (CommissionDatabase.WebApp)","EventId":{"Name":"ExecutingEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"8000008b-0004-fd00-b63f-84710c7967bb","RequestPath":"/api/exports/aicommissions","SpanId":"|db35c5e7-4e2963d2e6602a10.","TraceId":"db35c5e7-4e2963d2e6602a10","ParentId":"","Application":"ims-api"}}
{"Timestamp":"2021-07-22T08:50:58.9619447-05:00","MessageTemplate":"Route matched with {RouteData}. Executing controller action with signature {MethodInfo} on controller {Controller} ({AssemblyName}).","RenderedMessage":"Route matched with \"{action = \\\"GetAICommissionExport\\\",controller = \\\"Export\\\"}\". Executing controller action with signature \"System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetAICommissionExport(CommissionDatabase.Domain.DTO.FileExportDTO)\" on controller \"CommissionDatabase.WebApp.Controllers.ExportController\" (\"CommissionDatabase.WebApp\").","Properties":{"RouteData":"{action = \"GetAICommissionExport\",controller = \"Export\"}","MethodInfo":"System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetAICommissionExport(CommissionDatabase.Domain.DTO.FileExportDTO)","Controller":"CommissionDatabase.WebApp.Controllers.ExportController","AssemblyName":"CommissionDatabase.WebApp","EventId":{"Id":3,"Name":"ControllerActionExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","ActionId":"1197f939-11ae-4c34-bd03-922af3942f00","ActionName":"CommissionDatabase.WebApp.Controllers.ExportController.GetAICommissionExport (CommissionDatabase.WebApp)","Application":"ims-api"}}
{"Timestamp":"2021-07-22T08:50:59.0250952-05:00","MessageTemplate":"{HostingRequestFinishedLog:l}","RenderedMessage":"Request finished in 2043.6825ms 304 ","Properties":{"ElapsedMilliseconds":2043.6825,"StatusCode":304,"ContentType":null,"HostingRequestFinishedLog":"Request finished in 2043.6825ms 304 ","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"800001f8-0002-fb00-b63f-84710c7967bb","RequestPath":"/favicon.ico","SpanId":"|db35c5e6-4e2963d2e6602a10.","TraceId":"db35c5e6-4e2963d2e6602a10","Application":"ims-api"},"Renderings":{"HostingRequestFinishedLog":[{"Format":"l","Rendering":"Request finished in 2043.6825ms 304 "}]}}
{"Timestamp":"2021-07-22T08:50:59.7133458-05:00","MessageTemplate":"Entity Framework Core {version} initialized '{contextType}' using provider '{provider}' with options: {options}","RenderedMessage":"Entity Framework Core \"3.1.16\" initialized '\"CommissionDatabaseContext\"' using provider '\"Microsoft.EntityFrameworkCore.sqlServer\"' with options: \"None\"","Properties":{"version":"3.1.16","contextType":"CommissionDatabaseContext","provider":"Microsoft.EntityFrameworkCore.sqlServer","options":"None","EventId":{"Id":10403,"Name":"Microsoft.EntityFrameworkCore.Infrastructure.Contextinitialized"},"SourceContext":"Microsoft.EntityFrameworkCore.Infrastructure","Application":"ims-api"}}
{"Timestamp":"2021-07-22T08:50:59.9887399-05:00","MessageTemplate":"Executed DbCommand ({elapsed}ms) [Parameters=[{parameters}],CommandType='{commandType}',CommandTimeout='{commandTimeout}']{newLine}{commandText}","RenderedMessage":"Executed DbCommand (\"23\"ms) [Parameters=[\"@__p_0='?' (DbType = Int32)\"],CommandType='Text',CommandTimeout='30']\"\r\n\"\"SELECT TOP(1) [c].[Id],[c].[Name]\r\nFROM [Carriers] AS [c]\r\nWHERE [c].[Id] = @__p_0\"","Properties":{"elapsed":"23","parameters":"@__p_0='?' (DbType = Int32)","commandType":"Text","commandTimeout":30,"newLine":"\r\n","commandText":"SELECT TOP(1) [c].[Id],[c].[Name]\r\nFROM [Carriers] AS [c]\r\nWHERE [c].[Id] = @__p_0","EventId":{"Id":20101,"Name":"Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted"},"SourceContext":"Microsoft.EntityFrameworkCore.Database.Command","Application":"ims-api"}}
{"Timestamp":"2021-07-22T08:51:00.0737948-05:00","MessageTemplate":"Executing {FileResultType},sending file with download name '{FileDownloadName}' ...","RenderedMessage":"Executing \"Microsoft.AspNetCore.Mvc.FileStreamResult\",sending file with download name '\"\"' ...","Properties":{"FileResultType":"Microsoft.AspNetCore.Mvc.FileStreamResult","FileDownloadName":"","EventId":{"Id":2,"Name":"ExecutingFileResultWithNoFileName"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.FileStreamResultExecutor","Application":"ims-api"}}
{"Timestamp":"2021-07-22T08:51:00.0777075-05:00","MessageTemplate":"Executed action {ActionName} in {ElapsedMilliseconds}ms","RenderedMessage":"Executed action \"CommissionDatabase.WebApp.Controllers.ExportController.GetAICommissionExport (CommissionDatabase.WebApp)\" in 1115.5799ms","Properties":{"ActionName":"CommissionDatabase.WebApp.Controllers.ExportController.GetAICommissionExport (CommissionDatabase.WebApp)","ElapsedMilliseconds":1115.5799,"Name":"ActionExecuted"},"Application":"ims-api"}}

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)