首页 新闻 搜索 专区 学院

.Netcore中编写Middleware,如何传递参数?

0
悬赏园豆:30 [已解决问题] 解决于 2020-07-13 17:04

1.定义Middleware,在ctor中指定Action和Type类型的参数

2.在extension中调用app.UseMiddleware,并传递参数

3.Startup.cs中注册中间件

4.Main函数报错

高人隐士帮帮忙,给点建议

LazyWeChat的主页 LazyWeChat | 初学一级 | 园豆:97
提问于:2020-07-13 12:02
< >
分享
最佳答案
0

Middleware的构造函数不能传递null,所以我把Action和Type的实现都拿到extension中,在运行,ok了

LazyWeChat | 初学一级 |园豆:97 | 2020-07-13 17:03
其他回答(2)
0

InvokeAsync(HttpContext context,Action<WeChatMessager> onMessageReceived, IMessageQueue messageQueue)

app.UseMiddleware<LazyWeChatMiddleware>();

收获园豆:25
flyfishing | 园豆:652 (小虾三级) | 2020-07-13 14:30

参数如何传递呢?其实我就是想在注册LazyWeChatMiddleware的时候把委托和Type传递进去

支持(0) 反对(0) LazyWeChat | 园豆:97 (初学一级) | 2020-07-13 14:32

@dongb83: 参考 https://stackoverflow.com/questions/59717272/how-to-register-services-for-custom-net-core-middleware
Given the way the builder is being configured, then the builder and configuration action should be invoked before adding the middleware

支持(0) 反对(0) flyfishing | 园豆:652 (小虾三级) | 2020-07-13 15:01

@flyfishing: 我觉得这个和我的写法一样,但是我的报错了,说找不到合适的构造函数。

支持(0) 反对(0) LazyWeChat | 园豆:97 (初学一级) | 2020-07-13 16:41
0

中间件类似aop,当请求过来作为统一处理的组件,跟httpmodule差不多,传递参数没理解,一般来说,传过来一个httpcontext,每个中间件都能处理这个httpcontext里面的东西

收获园豆:5
不知道风往哪儿吹 | 园豆:707 (小虾三级) | 2020-07-13 15:19

一般情况下Middleware都是不需要传递参数的,但是我要实现的是监听客户端post过来的消息,并用一个委托(Action)处理post过来的消息,然后在把这个消息存放在队列里面去;所以我需要在注册中间件的时候,我可以传递一个Action,Action是使用我框架的人想要做的具体逻辑,传递一个Type进来这个Type是一个队列的实现,比如说用Kafka或RabbitMQ或者redis等实现这个队列。

支持(0) 反对(0) LazyWeChat | 园豆:97 (初学一级) | 2020-07-13 15:27

@dongb83: 你是想把逻辑处理开放给外部使用?开放出来一个委托,然后别人在委托里面做处理?

支持(0) 反对(0) 不知道风往哪儿吹 | 园豆:707 (小虾三级) | 2020-07-13 15:32

@不知道风往哪儿吹: 是的

支持(0) 反对(0) LazyWeChat | 园豆:97 (初学一级) | 2020-07-13 16:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册