快速端点DontCatchExceptions();不工作

问题描述 投票:0回答:1

我在 .net8 Blazor Web 应用程序 API 中使用快速端点。 我放

DontCatchExceptions();

在一些配置方法中,如下所示:

Post("policies/contacts");
Options(x => x.WithTags("Policy"));
DontCatchExceptions();

并且 HandleAsync 方法抛出错误:'

  public override async Task HandleAsync(CancellationToken ct)
  {
    try
    {
      var list = await Data.GetCountryCodeList();

      await SendAsync(list);
    }
    catch (Exception e)
    {
      ThrowError(e.Message, 400);
    }
  }

到目前为止,我只在 GET 方法中使用它,而且效果很好。 现在我在 POST 方法中使用它,但它不起作用。它只是被忽略了——没有错误或任何东西。 我不知道是否是因为它是 POST 方法,这只是我看到的唯一明显的区别。我在 ThrowError 行上放置了一个断点,它就在那里。

blazor fast-endpoints
1个回答
0
投票

我相信你误解了

ThrowError()
方法的目的。

ThrowError() - 此方法将立即中止执行并向客户端发送错误响应。

尽管这个方法以

Throw...
开头,但它实际上并不会抛出传统意义上的异常。其目的是短路处理程序的执行并发送错误响应。

这样就可以正常工作了。它不起作用,因为您要使用

DontCatchExceptions()
关闭内置错误响应功能,如果您有自己的 异常捕获中间件 设置,您就会这样做。

© www.soinside.com 2019 - 2024. All rights reserved.