C# MiniProfiler-在控制台应用程序中复制web视图信息

C# MiniProfiler-在控制台应用程序中复制web视图信息,c#,.net,console,miniprofiler,C#,.net,Console,Miniprofiler,在控制台应用程序中使用mini profiler时,是否可以从中获取与在web应用程序中相同级别的信息?理想情况下,我只想在控制台中自托管web UI,但看起来不可能 我的主要目标是获取在调用时执行的sqlqueries及其参数/运行时。我尝试过RenderPlainText解决方案,但它远没有webview那么详细,当发生有趣的事情时,我似乎没有一个钩子可以用来记录它的内容。没有一种内置的方法来获得基于文本的profiler RenderPlainText的完整输出,因为人们似乎都想要各种复杂

在控制台应用程序中使用mini profiler时,是否可以从中获取与在web应用程序中相同级别的信息?理想情况下,我只想在控制台中自托管web UI,但看起来不可能


我的主要目标是获取在调用时执行的sqlqueries及其参数/运行时。我尝试过RenderPlainText解决方案,但它远没有webview那么详细,当发生有趣的事情时,我似乎没有一个钩子可以用来记录它的内容。

没有一种内置的方法来获得基于文本的profiler RenderPlainText的完整输出,因为人们似乎都想要各种复杂的数据。但是有几个选择!你可以:

通过抓取计时,手动呈现探查器输出。如果只需要查询列表,可以循环所有查询级别的计时并打印出它们的自定义计时。这听起来有点不祥,因为它是一棵树,但有profiler.GetTimingHierarchy可用于将它们全部作为列表,例如: var profiler=MiniProfiler.StartNew; 使用profiler.StepMyStep 使用profiler.CustomTimingsql,选择* { //东西 } 分析器。停止; profiler.GetTimingHierarchy中的foreach变量计时 { 如果timing.HasCustomTimings { foreach var timingType在timing.CustomTimings中 { Console.WriteLinetingType.Key+查询:; foreach变量在timingType.Value中查询 { Console.WriteLine${QueryMing.DurationMillissions}ms-{QueryMing.CommandString}; } } } } 这将产生:

sql queries:
  0.9 ms - Select *
或者,更复杂的是,为探查器使用共享存储,并在web应用程序中随时随地查看它们。例如,如果您将console应用程序设置为存储在Redis中,则默认设置为存储在内存中,那么您可以将web应用程序指向相同的存储,并使用web UI查看它们。您只需要确保您的用户ID匹配。这是选项上的.UserIdProvider,默认为web端的IP地址。例如,在ASP.NET Core中: services.AddMiniProfileroptions=> { options.UserIdProvider=request=>MyGetUserIdFunctionrequest; };
使用第二个选项时,请注意URL是一致的,如果从MiniProfiler web UI单击“共享”,则更改的只是GUID。您可以使用当前的profiler.Id,并使用它弹出一个到控制台的方便链接。

没有一种内置的方法可以获得基于文本的profiler RenderPlainText的完整输出,因为人们似乎都想要各种复杂数据。但是有几个选择!你可以:

通过抓取计时,手动呈现探查器输出。如果只需要查询列表,可以循环所有查询级别的计时并打印出它们的自定义计时。这听起来有点不祥,因为它是一棵树,但有profiler.GetTimingHierarchy可用于将它们全部作为列表,例如: var profiler=MiniProfiler.StartNew; 使用profiler.StepMyStep 使用profiler.CustomTimingsql,选择* { //东西 } 分析器。停止; profiler.GetTimingHierarchy中的foreach变量计时 { 如果timing.HasCustomTimings { foreach var timingType在timing.CustomTimings中 { Console.WriteLinetingType.Key+查询:; foreach变量在timingType.Value中查询 { Console.WriteLine${QueryMing.DurationMillissions}ms-{QueryMing.CommandString}; } } } } 这将产生:

sql queries:
  0.9 ms - Select *
或者,更复杂的是,为探查器使用共享存储,并在web应用程序中随时随地查看它们。例如,如果您将console应用程序设置为存储在Redis中,则默认设置为存储在内存中,那么您可以将web应用程序指向相同的存储,并使用web UI查看它们。您只需要确保您的用户ID匹配。这是选项上的.UserIdProvider,默认为web端的IP地址。例如,在ASP.NET Core中: services.AddMiniProfileroptions=> { options.UserIdProvider=request=>MyGetUserIdFunctionrequest; }; 使用第二个选项时,请注意URL是一致的,如果从MiniProfiler web UI单击“共享”,则更改的只是GUID。您可以使用当前的profiler.Id并使用它弹出一个指向控制台的方便链接