1

我想集成 MiniProfiler 是一个 WebApi 或者 View /XX/results-index。WebApi 使用承载令牌进行身份验证。我只希望 Active Directory 中的组用户可以看到结果,但我不明白。

我在 ServicesCollection 中有这段代码:

services.AddMiniProfiler(options =>
{
   options.RouteBasePath = "/profiler";
   options.ResultsAuthorizeAsync = async request => await GetAuthorization(request);            }).AddEntityFramework();

private static async Task<bool> GetAuthorization(HttpRequest request)
{
 //   var user = request.HttpContext.User.Identity.Name; --> Is null
   return true;
}

在启动中的配置方法中:

app.UseSwagger().UseSwaggerUI(options =>
{
   options.SwaggerEndpoint($"/swagger/v1/swagger.json", $"{env.ApplicationName} V1");
   options.OAuthClientId("TestApiswaggerui");
   options.OAuthAppName("TestApi Swagger UI");
   options.IndexStream = () => GetType().GetTypeInfo().Assembly.GetManifestResourceStream(
                        "TestApi.SwaggerMiniProfiler.html");
})
.UseMiniProfiler();

我想通过一些选项查看迷你分析器信息:

  • http://localhost:5050/profiler/results-index --> 显示调用的列表方法
  • http://localhost:5050/swagger/index.html --> 在同一页面中显示 MiniProfiler

环境:

.NET Core version: 3.1
MiniProfiler version: MiniProfiler.AspNetCore.Mvc v.4.2.1
Operative system: Windows 10
4

2 回答 2

0

我只想保留从活动目录中读取该组的跟踪的选项:

 services.AddMiniProfiler(options =>
                    {
                        // (Optional) Path to use for profiler URLs, default is /mini-profiler-resources
                        options.RouteBasePath = "/profiler";

                        options.ColorScheme = StackExchange.Profiling.ColorScheme.Light;
                        options.PopupRenderPosition = StackExchange.Profiling.RenderPosition.BottomLeft;
                        options.PopupShowTimeWithChildren = true;
                        options.PopupShowTrivial = true;
                        options.ShouldProfile = ShowProfile;
                        options.SqlFormatter = new StackExchange.Profiling.SqlFormatters.InlineFormatter();

                        options.ResultsAuthorize = request => request.HttpContext.User.IsInRole("S-INFORMATICA");
 })
                    .AddEntityFramework();
于 2020-06-29T12:09:39.197 回答
0

您可能在这里缺少的部分是 MiniProfiler 显示您的结果。什么是“你”是由UserIdProvider选项决定的。记录和查看配置文件时,确保它们是相同的“用户 ID”(默认为 IP 地址)。在选项中看起来像这样:

services.AddMiniProfiler(options =>
{
   options.UserIdProvider = request => ConsistentUserId(request);
});

如果您的 swagger 根本没有零服务器端处理(例如,它不包括 MiniProfiler<script>标签.RenderInludes()<mini-profiler />标签助手,那么问题不在于查看配置文件,甚至不尝试查看。我有一些想法围绕一个没有配置文件的静态标签当前查看,但我不知道如何在它的生成阶段让它们进入 Swagger(只是不够熟悉)。请注意,这是一个公然的 hack,但您现在可以解决这个问题手动脚本标签。为此,您需要关注https://github.com/MiniProfiler/dotnet/issues/326

于 2020-06-26T22:32:29.237 回答