首页 > 解决方案 > 使用引发事件的 ASP.NET Core Web API 控制器时,如何连接事件处理程序?

问题描述

基本上我什至不知道在哪里注册控制器实例的事件处理程序,因为实例化是由 DI 容器处理的,我想在新创建的控制器实例上注册。

这甚至是可取的,还是有更好的方法适合 ASP.NET Core 的体系结构?

场景是这样的:
某个匿名用户可以使用隐藏链接,直到到期日为止。

第一个用例:
任何匿名用户都可以使用对控制器方法的 Web API 调用手动“关闭”链接(使其无效/不可用)。此方法可能引发 OnLinkClosed 事件。

第二个用例:
“计时作业”检查隐藏链接数据库表,如果一个过期,它将将该条目设置为“关闭”(而不是用户)。它可能会调用不同的 API 函数(即,因为现在我们知道是谁/什么关闭了链接),但对它的反应基本相同。这可能会引发 OnLinkClosedByChronJob 事件。

对 OnLinkClosed、OnLinkClosedByChronJob 的反应:

我不想在控制器方法中硬编码所有这些(以及以后的)功能(以避免长控制器方法是一个问题)。也许我应该在服务中这样做!?我还不确定何时将代码放入控制器方法或服务中。(显然,当我需要多个控制器中的服务功能时除外。任何涵盖此主题的提示/文章都值得赞赏。)
我不一定想使用 MediatR 或功能方法(请参阅此处:https://www. youtube.com/watch?v=IROSd7uB-tg&t=35m11s)但它可能是我正在寻找的。

充其量我想异步甚至并行地完成所有/部分反应功能。

诸如“此链接已关闭 - 有人感兴趣吗?”之类的事件 似乎是一个可行的想法。

标签: c#eventsasp.net-coreevent-handlingasp.net-core-webapi

解决方案


推荐阅读