正如标题所说,我正在尝试在我的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中实现异常处理,我缺少/做错了什么?
先谢谢你了。
1条答案
按热度按时间vfwfrxfs1#
感谢Andy的建议,我们相信这个问题已经被修复,因为评论中的讨论,因此我们将上述评论转化为这个线程的答案,以帮助其他社区成员。
正如您可能已经看到的,问题是您正在使用过时版本的Microsoft.Azure.Functions.Worker更新到最新版本从您的Nuget包管理器修复了您的问题。