0

我在我的 asp.net core 2.2 web api 中记录每个请求。我通过为 Fire and Forget 旋转 Task.Run 方法将日志发布到外部服务器。但它抛出异常并影响主线程。有什么方法可以在 asp.net core web api 中触发并忘记?

谢谢, Subbiah K

4

1 回答 1

0

如果您的日志方法是这样的异步方法:

public async Task SendLog(Log mylog)
{
    // some async logic.
}

您可以简单地调用它:

SendLog(log).ConfigureAwait(false);

发送过程将继续,不会阻塞您当前的线程。

参考:https ://stackoverflow.com/a/53184241/8676371


但是如果你想异步处理异常,你可以这样做:

  SendLog(log).
    ContinueWith(t => Console.WriteLine(t.Exception), TaskContinuationOptions.OnlyOnFaulted);

这将允许您处理“主”线程以外的线程上的异常。这意味着您不必“等待”来自原始线程的调用 SendLog();但是,仍然允许您对异常执行某些操作——但前提是发生异常。

参考:https ://stackoverflow.com/a/15524271/8676371

于 2019-11-08T16:03:15.310 回答