Как сделать чтобы MiniProfiler выводился в Swagger UI (ASP.NET Core Web API)?

224
09 марта 2018, 12:38

Есть приложение ASP.NET Core Web API. АПИ-методы выводятся в Swagger UI (выводится с помощью Swashbuckle.AspNetCore). Хотелось бы чтобы производитьность API-вызовов также выводились в Swagger UI с помощью MiniProfiler. Единственное, что удалось найти, так это мануал, но в нём это всё для .NET Framework, не .NET Core.

Answer 1

Ответ основан на ответе с enSO.

Для этого вам нужно настроить файл Swagger index.html как объясняется в documentation. После того, как вы настроите собственный файл HTML добавьте в него следующую строку:

<script async="async" id="mini-profiler"
        src="/mini-profiler-resources/includes.js?v=4.0.0.0"
        data-version="4.0.0.0"
        data-path="/mini-profiler-resources/"
        data-current-id="865f1487-f416-4d39-87fe-723e34847577"
        data-ids=""
        data-position="left"
        data-authorized="true"
        data-max-traces="15"
        data-toggle-shortcut="Alt+P"
        data-trivial-milliseconds="2.0"
        data-ignored-duplicate-execute-types="Open,OpenAsync,Close,CloseAsync">
</script>

Этот скрипт является результатом вызова метода MiniProfiler.Current.RenderIncludes().

Вот код методов ConfigureServices и Configure для настройки Swagger и Miniprofiler:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    // Register the Swagger generator, defining one or more Swagger documents
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
    });
    services.AddMiniProfiler();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    app.UseMiniProfiler();
    app.UseSwagger();
    app.UseSwaggerUI(c => {
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
        c.IndexStream = () => GetType().GetTypeInfo().Assembly.GetManifestResourceStream("SOMpSwaggerNetCore.SwaggerIndex.html");
    });
    app.UseMvc();
}
READ ALSO
Как достать из enum число и присвоить его другой переменной?

Как достать из enum число и присвоить его другой переменной?

Как достать из enum число и присвоить это число другой переменной ? Учитывая что элемент enum будет выбираться программой рандомным образом

162
Вывод связанных таблиц в два DataGridView - C#

Вывод связанных таблиц в два DataGridView - C#

ЗдравствуйтеИмеется БД Access из двух связанных таблиц (связь один ко многим; одной строке таблицы1 соответствует несколько строк таблицы2)

197
C# Изменение указанных при компиляции значений программы

C# Изменение указанных при компиляции значений программы

У меня есть приложение с заданной переменной, к примеру

187
Не обрабатывается кнопка - Unity3D

Не обрабатывается кнопка - Unity3D

Не обрабатывается кнопка при ее нажатии, хотя скрипт к кнопке подключен, метод вызывается, но через breakpoint приложение не останавливает при...

145