Skip to content

Commit c94ec75

Browse files
committed
#20 fix bug for miniprofiler
1 parent d102b88 commit c94ec75

File tree

5 files changed

+48
-16
lines changed

5 files changed

+48
-16
lines changed

samples/TodoApi/appsettings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
},
2020
"OpenApi": {
2121
"Enabled": true,
22-
"EnabledUI": true
22+
"EnabledUI": true,
23+
"EnabledProfiler": true
2324
},
2425
"Hosts": {
2526
"BasePath": "/",

src/NetCoreKit.Infrastructure.AspNetCore.Miniservice/NetCoreKit.Infrastructure.AspNetCore.Miniservice.csproj

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<id>NetCoreKit.Infrastructure.AspNetCore.Miniservice</id>
@@ -15,6 +15,14 @@
1515
<Copyright>Copyright (c) Thang Chung - 2018</Copyright>
1616
</PropertyGroup>
1717

18+
<ItemGroup>
19+
<None Remove="Swagger\index.html" />
20+
</ItemGroup>
21+
22+
<ItemGroup>
23+
<EmbeddedResource Include="Swagger\index.html" />
24+
</ItemGroup>
25+
1826
<ItemGroup>
1927
<PackageReference Include="AutoMapper" Version="7.0.1" />
2028
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="2.1.1" />
@@ -25,6 +33,7 @@
2533
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.1" />
2634
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="2.3.0" />
2735
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer" Version="2.2.0" />
36+
<PackageReference Include="Microsoft.AspNetCore.ResponseCaching" Version="2.1.1" />
2837
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Core" Version="2.1.2" />
2938
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.1.1" />
3039
<PackageReference Include="Microsoft.Extensions.Http" Version="2.1.1" />
@@ -34,8 +43,8 @@
3443
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.1.1" />
3544
<PackageReference Include="Microsoft.Extensions.PlatformAbstractions" Version="1.1.0" />
3645
<PackageReference Include="Microsoft.IdentityModel.Logging" Version="5.2.4" />
37-
<PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.0.133" />
38-
<PackageReference Include="MiniProfiler.EntityFrameworkCore" Version="4.0.133" />
46+
<PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.0.138" />
47+
<PackageReference Include="MiniProfiler.EntityFrameworkCore" Version="4.0.138" />
3948
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
4049
<PackageReference Include="Microsoft.AspNetCore.Authorization" Version="2.1.1" />
4150
<PackageReference Include="MediatR" Version="5.1.0" />

src/NetCoreKit.Infrastructure.AspNetCore.Miniservice/ServiceCollectionExtensions.cs

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
using NetCoreKit.Infrastructure.EfCore;
3434
using NetCoreKit.Infrastructure.EfCore.Db;
3535
using Newtonsoft.Json.Serialization;
36+
using StackExchange.Profiling;
3637
using Swashbuckle.AspNetCore.Swagger;
3738
using static NetCoreKit.Utils.Helpers.IdHelper;
3839

@@ -87,6 +88,9 @@ public static IServiceCollection AddMiniService<TDbContext>(
8788
services.AddDomainEventBus();
8889
services.AddCleanArch(config.LoadFullAssemblies());
8990

91+
services.AddMemoryCache();
92+
services.AddResponseCaching();
93+
9094
// #4
9195
services.AddRouting(o => o.LowercaseUrls = true);
9296
services
@@ -203,6 +207,13 @@ public static IServiceCollection AddMiniService<TDbContext>(
203207
{
204208
options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
205209
});
210+
211+
if (config.GetValue("OpenApi:EnabledProfiler", false))
212+
{
213+
services.AddMiniProfiler(options =>
214+
options.RouteBasePath = "/profiler"
215+
);
216+
}
206217
}
207218

208219
return services;
@@ -300,12 +311,18 @@ public static IApplicationBuilder UseMiniService(this IApplicationBuilder app)
300311

301312
app.UseMiddleware<LogHandlerMiddleware>();
302313

314+
app.UseResponseCaching();
315+
303316
// #2
304317
if (env.IsDevelopment())
305318
{
306319
app.UseDeveloperExceptionPage();
307320
app.UseDatabaseErrorPage();
308-
// app.UseMiniProfiler();
321+
322+
if (config.GetValue("OpenApi:EnabledProfiler", false))
323+
{
324+
app.UseMiniProfiler();
325+
}
309326
}
310327
else
311328
{
@@ -355,6 +372,11 @@ public static IApplicationBuilder UseMiniService(this IApplicationBuilder app)
355372

356373
app.UseMiddleware<ErrorHandlerMiddleware>();
357374

375+
if (config.GetValue("OpenApi:EnabledProfiler", false))
376+
{
377+
app.UseMiddleware<MiniProfilerMiddleware>();
378+
}
379+
358380
// #3
359381
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
360382
app.Map("/liveness", lapp => lapp.Run(async ctx => ctx.Response.StatusCode = 200));
@@ -408,7 +430,14 @@ public static IApplicationBuilder UseMiniService(this IApplicationBuilder app)
408430
c.OAuth2RedirectUrl($"{currentHostUri}/swagger/oauth2-redirect.html");
409431
}
410432

411-
// c.IndexStream = () => typeof(MiniServiceExtensions).GetTypeInfo().Assembly.GetManifestResourceStream("VND.Fw.Infrastructure.AspNetCore.Swagger.index.html");
433+
if (config.GetValue("OpenApi:EnabledProfiler", false))
434+
{
435+
c.IndexStream = () =>
436+
typeof(ServiceCollectionExtensions)
437+
.GetTypeInfo()
438+
.Assembly
439+
.GetManifestResourceStream("NetCoreKit.Infrastructure.AspNetCore.Miniservice.Swagger.index.html");
440+
}
412441
});
413442

414443
return app;

src/NetCoreKit.Infrastructure.AspNetCore.OpenApi/index.html renamed to src/NetCoreKit.Infrastructure.AspNetCore.Miniservice/Swagger/index.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
<script async="async" id="mini-profiler" src="/profiler/includes.min.js?v=4.0.138+gcc91adf599" data-version="4.0.138+gcc91adf599" data-path="/profiler/" data-current-id="4ec7c742-49d4-4eaf-8281-3c1e0efa748a" 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>
2+
13
<!-- HTML for static distribution bundle build -->
24
<!DOCTYPE html>
35
<html lang="en">
@@ -70,7 +72,7 @@
7072
<!-- Workaround for https://github.com/swagger-api/swagger-editor/issues/1371 -->
7173
<script>
7274
if (window.navigator.userAgent.indexOf("Edge") > -1) {
73-
console.log("Removing native Edge fetch in favor of swagger-ui's polyfill")
75+
console.log("Removing native Edge fetch in favor of swagger-ui's polyfill");
7476
window.fetch = undefined;
7577
}
7678
</script>
@@ -94,7 +96,6 @@
9496
ui.initOAuth(oauthConfigObject);
9597
}
9698
</script>
97-
<script async="async" id="mini-profiler" src="/profiler/includes.js?v=4.0.0.0" data-version="4.0.0.0" data-path="/profiler/" 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>
9899
</body>
99100

100101
</html>

src/NetCoreKit.Infrastructure.AspNetCore.OpenApi/NetCoreKit.Infrastructure.AspNetCore.OpenApi.csproj

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,6 @@
1515
<Copyright>Copyright (c) Thang Chung - 2018</Copyright>
1616
</PropertyGroup>
1717

18-
<ItemGroup>
19-
<None Remove="index.html" />
20-
</ItemGroup>
21-
22-
<ItemGroup>
23-
<EmbeddedResource Include="index.html" />
24-
</ItemGroup>
25-
2618
<ItemGroup>
2719
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="3.0.0" />
2820
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="3.0.0" />

0 commit comments

Comments
 (0)