当前位置: 首页 > 知识库问答 >
问题:

Web API Core 3.1 ExceptionHandler中间件在写入HttpContext.Response时引发“无法写入封闭流”

钱澄邈
2023-03-14

我有一个简单的Web API核心V3.1,在这里我试图全局处理异常。在完成以下回答https://stackoverflow.com/a/55166404/1508398之后,下面是我的代码。

 app.UseExceptionHandler(appBuilder => appBuilder.Run(async context =>
 {
     var exceptionHandlerPathFeature = context.Features.Get<IExceptionHandlerPathFeature>();
     var exception = exceptionHandlerPathFeature.Error;

     var result = JsonConvert.SerializeObject(new { error = exception.Message });
     context.Response.ContentType = "application/json";
     await context.Response.WriteAsync(result);
 }));

共有1个答案

宁锐
2023-03-14

看起来其他人(另一个middlewhare)已经关闭了流。

在。NET-Core中,排序很重要。还记得你分享的链接吗:

重要:记住在UseMvc(或.NET Core3中的UseRouting)之前添加它,因为order很重要。

public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        app.Use(async (context, next) =>
        {
            // Do work that doesn't write to the Response.
            await next.Invoke();
            // Do logging or other work that doesn't write to the Response.
        });

        app.Run(async context =>
        {
            await context.Response.WriteAsync("Hello from 2nd delegate.");
        });

第一次运行终止管道。所以您可以做一些工作,但最终当第一次运行发生时,响应将关闭。

请分享更多的代码为我们提供更多的帮助。

 类似资料:
  • 问题内容: 我正在尝试将文档列表转储到AWSelasticsearch实例。运行良好。然后,突然间它开始抛出此错误: 我检查了论坛。他们中的大多数人都说这是JVM内存问题。如果速度超过92%,AWS将停止对集群/索引的任何写操作。但是,当我检查JVM内存时,它显示不到92%。我在这里想念什么吗? 谢谢。 问题答案: 此错误是Amazon ES服务主动阻止写操作以保护集群避免达到红色或黄色状态。它使

  • 我正在GKE上创建一个nginx入口。 在每次重新加载事件中,我的控制器打印到日志: I1019 13:23:31.679126 6控制器。go:145]“检测到配置更改,需要后端重新加载”I1019 13:23:31.776558 6控制器。转到:162]“后端成功重新加载”I1019 13:23:31.776897 6事件。go:282]事件(v1.ObjectReference{种类:“Po

  • 任何Avro格式的文件写入尝试都会失败,堆栈跟踪如下。 我们正在使用Spark 2.4.3(使用用户提供的Hadoop)、Scala 2.12,并且我们在运行时使用任一Spark-shell加载Avro包: org.apache.sparkavro_2 或spark提交: 提交org.apache.sparkavro_2 spark会话报告已成功加载Avro包。 ... 在任何一种情况下,当我们尝

  • 问题内容: 我正在尝试从applet编写示例文件,但无法正常工作。下面是代码。 小程序 的HTML 我也没有得到任何错误。请指教。 问题答案: 这是因为小程序位于其自己的沙箱中,在沙箱中它们需要特殊权限才能执行某些操作,例如读取或写入客户端计算机的磁盘。记住,小程序是在客户端计算机的上下文中执行的,它们是客人并且需要遵循内部规则 查看小程序可以做什么和不能做什么以获取更多详细信息

  • 理想情况下,我想在localhost上记录开发过程中的一切,只记录实时服务器上的错误。我在我的开发平台(Windows 10,JavaWicket)上无法登录文件。 log4j2.xml 我已经设法得到一些日志写入我tomcat的文件夹。 只有我的一些信息出现了。我不知道什么符号有意义,什么符号没有意义。 可公开访问页面的基页记录子类。 [信息]2017-10-19 17:07:13.208[ht

  • 问题内容: 我正在尝试将BufferedImage写入jpeg文件,但是我的Java程序引发了异常。我能够成功将相同的缓冲区保存为gif和png。我尝试在Google上四处寻找解决方案,但无济于事。 码: 例外: 问题答案: OpenJDK没有本地JPEG编码器,请尝试使用Sun的JDK或使用库(例如JAI) AFAIK,关于“粉红色色调”,Java将JPEG保存为ARGB(仍然具有透明度信息)。