gpt4 book ai didi

c# - Azure .net 5隔离函数: Using middleware to catch exceptions

转载 作者:行者123 更新时间:2023-12-05 05:53:34 30 4
gpt4 key购买 nike

正如标题所示,我正在尝试处理 Azure 函数中间件中的异常。根据some应该是可以的articles ,但我还没有设法让他们的代码为我工作。我还检查过the docs但这并没有处理异常处理。

我的代码:

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 中间件中实现异常处理,我遗漏/做错了什么?

提前致谢。

最佳答案

谢谢Andy对于您的建议,我们相信通过评论中的讨论,该问题已得到解决,因此我们将上述评论转变为该帖子的答案,以帮助其他社区成员。

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

关于c# - Azure .net 5隔离函数: Using middleware to catch exceptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69855276/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com