ASP.Net 数据库中的核心 2 Web API 性能指标



我想将每个请求的输入、输出时间、API 存储在由实体框架管理的数据库上下文中。

最好的方法似乎是在入口点添加一个中间件。我可以达到收集指标和 API 的程度,但无法放入数据库,因为 EF DBContext 似乎与 Mvc 层相关联。它给了我一个ObjectDisposedException。

Q1: Is this something we can put to work?

因此,我愿意忍受将其移至过滤器的下一个最佳选择。进入 Mvc 的第一个入口点似乎是授权过滤器。但是我看不到如何在此过滤器中获取OnExecute和OnExecute事件。不过,我可以将所有内容存储在过滤器的数据库中。

Q2: How do I get the in-time and out-time in AuthorizationFilter?

Q3: A more elaborate solution would be to put the metrics into ElasticSearch or an external system. But how to ensure we have a connection pool (or equivalent) wired up and ready for use at the middleware entry point. Would it not suffer the same issue as DBContext?

问题 3:更复杂的解决方案是将指标放入 ElasticSearch 或外部系统。但是如何确保我们有一个 连接池(或等效池(已连接并准备在 中间件入口点。它不会遭受与 DBContext?

我建议使用带有适当接收器的Serilog(例如ElasticSearch(。您可以在应用程序启动时对其进行配置,将其集成到具有UseSerilog主机,然后您可以使用标准ILogger接口(或显式使用 Serilog,例如Log.ForContext<YourMiddleware>()(

你提到了对外部系统的流式处理指标,因此值得建议将应用程序见解添加到应用程序中。结合门户,它是一个非常强大的工具,尤其是分析功能。还有一个免费的iirc层。

我不为 MS 等工作,所以我不是在推送产品,只是一个建议。

最新更新