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

wfveoks0  于 2023-06-24  发布在  .NET
关注(0)|答案(1)|浏览(126)

正如标题所说,我正在尝试在我的Azure函数中间件中处理异常。根据somearticles应该是可能的,但我还没有设法使他们的代码为我工作。我也检查了文档,但没有处理异常处理。
我的代码:
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 Functions Middleware中实现异常处理,我缺少/做错了什么?

先谢谢你了。

vfwfrxfs

vfwfrxfs1#

感谢Andy的建议,我们相信这个问题已经被修复,因为评论中的讨论,因此我们将上述评论转化为这个线程的答案,以帮助其他社区成员。
正如您可能已经看到的,问题是您正在使用过时版本的Microsoft.Azure.Functions.Worker更新到最新版本从您的Nuget包管理器修复了您的问题。

相关问题