c# - 发生错误时,如何让 Azure Insights 记录入口方法(如果不是所有方法)的请求有效负载?

标签 c# azure exception

因此,我一直在尝试找出在多个 API 中抛出错误时记录有效负载的方法。但问题是,我正在处理大量端点,手动记录每个端点并编写 try catch 充其量似乎是噩梦。

谢谢。

最佳答案

使用中间件在请求到达您的 Controller /操作 API 之前使用全局 try {//AI Log request info } catch {//AI Log error } 拦截请求

以.NET 4.5 Owin中间件为例:

    public class LogGlobalErrorMiddleware : OwinMiddleware
    {
        private readonly OwinMiddleware _Next;
        private readonly ILog _logger;


        /// <summary>
        /// Ctror
        /// </summary>
        /// <param name="next"></param> 
        /// <param name="healthCheck"></param>
        public LogGlobalErrorMiddleware(OwinMiddleware next, ILog logger) : base(next)
        {
            this._Next = next;
            this._logger = logger;
        }

        public async override Task Invoke(IOwinContext context)
        {
            await LogGlobalError(context);
        }

        /// <summary>
        /// Middleware logic to log global errors in our microservice
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private async Task LogGlobalError(IOwinContext context)
        {

            try
            {
                //Moving through pipeline
                await Next.Invoke(context);
            }
            catch (Exception ex)
            {
                _logger.Error(ex, "An unhandled exception happened! ");
            }

        }


    }

关于c# - 发生错误时,如何让 Azure Insights 记录入口方法(如果不是所有方法)的请求有效负载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66819055/

相关文章:

c# - 具有不存在的 SelectedValue 的 DropDownList

azure - 2 个辅助角色、1 个 VHD、自动故障转移

java - 异常:"attempt to access org.rosuda.REngine.REXPGenericVector as String"

c# - 事件通知引擎 - MSMQ

c# - 有选择地隐藏 C# 图表中的系列

c# - 如何限制矢量的角度?

c# - 如何使用 C# 启动之前停止的 Azure 容器实例?

.net - Azure服务总线: How to Renew Lock?

ruby - 如何处理 mongodb 在 ruby​​ 中的 E11000 重复键错误

android - 使用 Apache POI 打开 .xlsx 文件时出现异常