1.定义Middleware,在ctor中指定Action和Type类型的参数
2.在extension中调用app.UseMiddleware,并传递参数
3.Startup.cs中注册中间件
4.Main函数报错
高人隐士帮帮忙,给点建议
Middleware的构造函数不能传递null,所以我把Action和Type的实现都拿到extension中,在运行,ok了
InvokeAsync(HttpContext context,Action<WeChatMessager> onMessageReceived, IMessageQueue messageQueue)
app.UseMiddleware<LazyWeChatMiddleware>();
参数如何传递呢?其实我就是想在注册LazyWeChatMiddleware的时候把委托和Type传递进去
@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
@flyfishing: 我觉得这个和我的写法一样,但是我的报错了,说找不到合适的构造函数。
中间件类似aop,当请求过来作为统一处理的组件,跟httpmodule差不多,传递参数没理解,一般来说,传过来一个httpcontext,每个中间件都能处理这个httpcontext里面的东西
一般情况下Middleware都是不需要传递参数的,但是我要实现的是监听客户端post过来的消息,并用一个委托(Action)处理post过来的消息,然后在把这个消息存放在队列里面去;所以我需要在注册中间件的时候,我可以传递一个Action,Action是使用我框架的人想要做的具体逻辑,传递一个Type进来这个Type是一个队列的实现,比如说用Kafka或RabbitMQ或者redis等实现这个队列。
@dongb83: 你是想把逻辑处理开放给外部使用?开放出来一个委托,然后别人在委托里面做处理?
@不知道风往哪儿吹: 是的