Azure .net 5 独立函数:使用中间件捕获异常

Azure .net 5 isolated functions: Using middleware to catch exceptions

正如标题所说,我正在尝试处理我的 Azure 函数中间件中的异常。根据 some articles, but I've not managed to make their code work for me. I've also checked the docs 应该是可能的,但是没有处理异常处理。

我的代码(也在 Github 上):

Program.cs:

using Microsoft.Extensions.Hosting;

namespace MiddleWareTest
{
    public class Program
    {
        public static void Main()
        {
            var host = new HostBuilder()
                .ConfigureFunctionsWorkerDefaults(
                    builder =>
                    {
                        builder.UseMiddleware<ExceptionLoggingMiddleware>();
                    }
                )
                .Build();

            host.Run();
        }
    }
}

ExceptionLoggingMiddleware.cs:

using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Middleware;
using Microsoft.Extensions.Logging;
using System;
using System.Threading.Tasks;

namespace MiddleWareTest
{
    public class ExceptionLoggingMiddleware : IFunctionsWorkerMiddleware
    {
        public async Task Invoke(FunctionContext context, FunctionExecutionDelegate next)
        {
            try
            {
                await next(context);
            }
            catch (Exception ex)
            {
                var logger = context.GetLogger(context.FunctionDefinition.Name);
                logger.LogError("Unexpected Error in {0}: {1}", context.FunctionDefinition.Name, ex.Message);
            }
        }
    }
}

Function1.cs

using System;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;

namespace MiddleWareTest
{
    public class Function1
    {
        [Function("Function1")]
        public static HttpResponseData Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
            FunctionContext context)
        {
            throw new Exception("yo");
        }
    }
}

根据我的理解,这段代码应该足以处理异常,但是每当我执行 Function1 时,我的中间件都没有处理异常,它没有被捕获。

我的问题:

为了在我的 Azure 函数中间件中实现异常处理,我 missing/doing 错了什么?

提前致谢。

感谢 Andy 的建议,我们认为该问题已根据评论中的讨论得到解决,因此我们将上述评论转为此主题的答案以帮助其他社区成员。

您可能已经看到,问题是您使用的是过时版本 Microsoft.Azure.Functions.Worker 从 Nuget 包管理器更新到最新版本解决了您的问题。