以下文章来源于公众号:dotnetcore实战
在 asp.net core
中使用grpc.aspnetcore
工具包写 grpc
服务,想实现 grpc
的异常全局拦截,
代码如下:
app.uexceptionhandler(configure =>{ configure.run(async e => { console.writeline("exception test code"); });});
然后注入到 rvicecollection 容器中:
rvices.ad醋泡大蒜的功效dmvc(options =>{ options.filters.add(typeof(baexceptionfilter));});
奇怪的是,这段代码并不能实现拦截功能,我是真的不想让 try-catch 包裹所有的办法,太痛苦了。
我们可以给 grpc 添加一个自定义拦截器,先看一下类定义:
using system;using system.collections.generic;using system.linq;using system.threading.tasks;using grpc.core;using grpc.core.interceptors;using microsoft.extensions.logging;namespace systemx.webrvice.rvices{ public class rverloggerinterceptor : interceptor { private readonly ilogger<华东五市旅游景点rverloggerinterceptor> _logger; public rverloggerinterceptor(ilogger<rverloggerinterceptor> logger) { _logger = logger; } public override async ta黄山自驾游sk<trespon> unaryrverhandler<trequest, trespon>( trequest request, rvercallcontext context, unaryrvermethod<trequest, trespon> continuation) { //logcall<trequest, tres重阳节好词好句摘抄pon>(methodtype.unary, context); try { return await continuation(request, context); } 艺考文化课学习 catch (exception ex) { // note: the grpc framework also logs exceptions thrown by handlers to .net core logging. _logger.logerror(ex, $"error thrown by {context.method}."); throw; } } }}
接下来就可以在 startup 中通过 addgrpc 注入啦:
rvices.addgrpc(options =>{ { options.interceptors.add<rverloggerinterceptor>(); options.enabledetailederrors = true; }});
grpc
早已经替代 wcf
成功一种基于tcp
的跨机器通讯技术,看得出 grpc 和 asp.net core 集成越来越好,是得需要大家花费精力好好学习。
到此这篇关于在 asp.net core 中为 grpc 服务添加全局异常处理 的文章就介绍到这了,更多相关在 asp.net core 中为 grpc 服务添加异常处理 内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 10:59:46,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/b3d74ad4d3f69f96941dfbb88e81035b.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:在 ASP.NET Core 中为 gRPC 服务添加全局异常处理.doc
本文 PDF 下载地址:在 ASP.NET Core 中为 gRPC 服务添加全局异常处理.pdf
留言与评论(共有 0 条评论) |