首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用程序洞察中间件.跟踪SQL参数

应用程序洞察中间件.跟踪SQL参数
EN

Stack Overflow用户
提问于 2020-10-08 12:02:45
回答 1查看 532关注 0票数 0

Problem:默认的应用程序洞察力( 不跟踪依赖关系遥测中的SQL参数。 )。我希望启用参数跟踪或手动添加参数。

小背景:我有带应用洞察力的.Net核心2应用程序。我正在读取请求正文,并使用TelemetryInitializer将其保存为自定义属性。我迁移到了.Net核心3,在那里我再也不能使用TelemetryInitializer作为.Net Core3 禁用同步IO了。类似的问题描述了这里。因此,我已经按照这个示例实现了应用程序洞察中间件。我使用EF Core进行所有的数据库访问。

possible :我找到了这个问题,它说可以“在TelemetryInitializer中访问SqlCommand操作细节”。但是,如何使用应用程序洞察中间件来实现这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-08 15:25:08

您不必为此编写asp.net核心中间件。相反,您应该使用TelemetryInitializer。给出了这样一种不定式:

代码语言:javascript
复制
    public class CustomInitializer : ITelemetryInitializer
    {
        public void Initialize(ITelemetry telemetry)
        {
            if (!(telemetry is DependencyTelemetry supportedTelemetry))
                return;

            if (supportedTelemetry.Type == "SQL" && supportedTelemetry.TryGetOperationDetail("SqlCommand", out var command))
            {
                foreach (DbParameter parameter in ((SqlCommand)command).Parameters)
                {
                    supportedTelemetry.Properties.Add(parameter.ParameterName, parameter.Value.ToString());
                }
            }
        }
    }

我不知道你为什么说

我迁移到.Net核心3,在那里我不能再使用TelemetryInitializer作为.Net核心3禁用同步IO

我一直在使用TelemetryInitializers。

我在App中将参数视为自定义属性:

参考:我在控制器中使用了此代码,基于本教程

代码语言:javascript
复制
            using (var bc = new BloggingContext())
            {
                bc.Database.EnsureCreated();
                await bc.Blogs.AddAsync(new Blog
                {
                    Url = "www.blank.com",
                    Rating = 0
                });
                await bc.SaveChangesAsync();
            }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64262114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档