From 638c6f8f2b37528c1f0d7a863f5d26914453a31c Mon Sep 17 00:00:00 2001 From: Mark J Price Date: Sat, 24 Sep 2022 09:10:26 +0100 Subject: [PATCH] Initial commit --- .../Minimal.WebApi/Minimal.WebApi.csproj | 5 ++ .../Properties/launchSettings.json | 14 ++++- .../Minimal.WebApi/wwwroot/favicon.ico | Bin 0 -> 15406 bytes .../Northwind.BlazorServer.csproj | 8 +++ .../Northwind.BlazorServer.csproj.user | 6 ++ .../Properties/launchSettings.json | 11 +++- .../wwwroot/favicon.ico | Bin 5430 -> 15406 bytes .../Client/wwwroot/favicon.ico | Bin 5430 -> 15406 bytes .../Server/Properties/launchSettings.json | 56 ++++++++++-------- .../Server/wwwroot/favicon.ico | Bin 0 -> 15406 bytes .../Controllers/HomeController.cs | 6 +- .../Controllers/RolesController.cs | 2 +- .../Northwind.Mvc/Northwind.Mvc.csproj | 17 ++++-- .../Northwind.Mvc/Northwind.Mvc.csproj.user | 9 +++ vs4win/PracticalApps/Northwind.Mvc/Program.cs | 17 +++++- .../Properties/launchSettings.json | 11 +++- .../Views/Home/ProductDetail.cshtml | 6 +- .../appsettings.Development.json | 3 +- .../Northwind.Mvc/wwwroot/favicon.ico | Bin 5430 -> 15406 bytes .../Northwind.Web/Northwind.Web.csproj | 4 ++ .../Northwind.Web/Northwind.Web.csproj.user | 9 +++ vs4win/PracticalApps/Northwind.Web/Program.cs | 6 ++ .../Properties/launchSettings.json | 11 +++- .../Northwind.Web/wwwroot/favicon.ico | Bin 0 -> 15406 bytes .../Northwind.WebApi/Northwind.WebApi.csproj | 1 + .../Northwind.WebApi.csproj.user | 6 ++ .../PracticalApps/Northwind.WebApi/Program.cs | 6 +- .../Properties/launchSettings.json | 14 ++++- .../appsettings.Development.json | 3 +- .../Northwind.WebApi/wwwroot/favicon.ico | Bin 0 -> 15406 bytes vs4win/PracticalApps/favicon_io.zip | Bin 0 -> 70614 bytes .../Minimal.WebApi/Minimal.WebApi.csproj | 5 ++ .../Properties/launchSettings.json | 14 ++++- .../Minimal.WebApi/wwwroot/favicon.ico | Bin 0 -> 15406 bytes .../Northwind.BlazorServer.csproj | 8 +++ .../Northwind.BlazorServer.csproj.user | 6 ++ .../Properties/launchSettings.json | 11 +++- .../wwwroot/favicon.ico | Bin 5430 -> 15406 bytes .../Client/wwwroot/favicon.ico | Bin 5430 -> 15406 bytes .../Server/Properties/launchSettings.json | 56 ++++++++++-------- .../Server/wwwroot/favicon.ico | Bin 0 -> 15406 bytes .../Controllers/HomeController.cs | 6 +- .../Controllers/RolesController.cs | 2 +- .../Northwind.Mvc/Northwind.Mvc.csproj | 17 ++++-- .../Northwind.Mvc/Northwind.Mvc.csproj.user | 9 +++ vscode/PracticalApps/Northwind.Mvc/Program.cs | 17 +++++- .../Properties/launchSettings.json | 11 +++- .../Views/Home/ProductDetail.cshtml | 6 +- .../appsettings.Development.json | 3 +- .../Northwind.Mvc/wwwroot/favicon.ico | Bin 5430 -> 15406 bytes .../Northwind.Web/Northwind.Web.csproj | 4 ++ .../Northwind.Web/Northwind.Web.csproj.user | 9 +++ vscode/PracticalApps/Northwind.Web/Program.cs | 6 ++ .../Properties/launchSettings.json | 11 +++- .../Northwind.Web/wwwroot/favicon.ico | Bin 0 -> 15406 bytes .../Northwind.WebApi/Northwind.WebApi.csproj | 1 + .../Northwind.WebApi.csproj.user | 6 ++ .../PracticalApps/Northwind.WebApi/Program.cs | 6 +- .../Properties/launchSettings.json | 14 ++++- .../appsettings.Development.json | 3 +- .../Northwind.WebApi/wwwroot/favicon.ico | Bin 0 -> 15406 bytes vscode/PracticalApps/favicon_io.zip | Bin 0 -> 70614 bytes 62 files changed, 372 insertions(+), 90 deletions(-) create mode 100644 vs4win/PracticalApps/Minimal.WebApi/wwwroot/favicon.ico create mode 100644 vs4win/PracticalApps/Northwind.BlazorServer/Northwind.BlazorServer.csproj.user create mode 100644 vs4win/PracticalApps/Northwind.BlazorWasm/Server/wwwroot/favicon.ico create mode 100644 vs4win/PracticalApps/Northwind.Mvc/Northwind.Mvc.csproj.user create mode 100644 vs4win/PracticalApps/Northwind.Web/Northwind.Web.csproj.user create mode 100644 vs4win/PracticalApps/Northwind.Web/wwwroot/favicon.ico create mode 100644 vs4win/PracticalApps/Northwind.WebApi/Northwind.WebApi.csproj.user create mode 100644 vs4win/PracticalApps/Northwind.WebApi/wwwroot/favicon.ico create mode 100644 vs4win/PracticalApps/favicon_io.zip create mode 100644 vscode/PracticalApps/Minimal.WebApi/wwwroot/favicon.ico create mode 100644 vscode/PracticalApps/Northwind.BlazorServer/Northwind.BlazorServer.csproj.user create mode 100644 vscode/PracticalApps/Northwind.BlazorWasm/Server/wwwroot/favicon.ico create mode 100644 vscode/PracticalApps/Northwind.Mvc/Northwind.Mvc.csproj.user create mode 100644 vscode/PracticalApps/Northwind.Web/Northwind.Web.csproj.user create mode 100644 vscode/PracticalApps/Northwind.Web/wwwroot/favicon.ico create mode 100644 vscode/PracticalApps/Northwind.WebApi/Northwind.WebApi.csproj.user create mode 100644 vscode/PracticalApps/Northwind.WebApi/wwwroot/favicon.ico create mode 100644 vscode/PracticalApps/favicon_io.zip diff --git a/vs4win/PracticalApps/Minimal.WebApi/Minimal.WebApi.csproj b/vs4win/PracticalApps/Minimal.WebApi/Minimal.WebApi.csproj index 8f873a5..cff975c 100644 --- a/vs4win/PracticalApps/Minimal.WebApi/Minimal.WebApi.csproj +++ b/vs4win/PracticalApps/Minimal.WebApi/Minimal.WebApi.csproj @@ -10,4 +10,9 @@ + + + + + diff --git a/vs4win/PracticalApps/Minimal.WebApi/Properties/launchSettings.json b/vs4win/PracticalApps/Minimal.WebApi/Properties/launchSettings.json index 2137b19..af47987 100644 --- a/vs4win/PracticalApps/Minimal.WebApi/Properties/launchSettings.json +++ b/vs4win/PracticalApps/Minimal.WebApi/Properties/launchSettings.json @@ -9,11 +9,21 @@ } }, "profiles": { - "Minimal.WebApi": { + "http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, - "launchUrl": "weatherforecast", + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", "applicationUrl": "https://localhost:5003", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" diff --git a/vs4win/PracticalApps/Minimal.WebApi/wwwroot/favicon.ico b/vs4win/PracticalApps/Minimal.WebApi/wwwroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..46d8f404fd35717b377dc3183c4f2a10a94446c7 GIT binary patch literal 15406 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 N{+GX(7KqmZ{{_dnh57&h literal 0 HcmV?d00001 diff --git a/vs4win/PracticalApps/Northwind.BlazorServer/Northwind.BlazorServer.csproj b/vs4win/PracticalApps/Northwind.BlazorServer/Northwind.BlazorServer.csproj index a3ec562..c5f3964 100644 --- a/vs4win/PracticalApps/Northwind.BlazorServer/Northwind.BlazorServer.csproj +++ b/vs4win/PracticalApps/Northwind.BlazorServer/Northwind.BlazorServer.csproj @@ -6,6 +6,14 @@ enable + + + + + + + + diff --git a/vs4win/PracticalApps/Northwind.BlazorServer/Northwind.BlazorServer.csproj.user b/vs4win/PracticalApps/Northwind.BlazorServer/Northwind.BlazorServer.csproj.user new file mode 100644 index 0000000..9ff5820 --- /dev/null +++ b/vs4win/PracticalApps/Northwind.BlazorServer/Northwind.BlazorServer.csproj.user @@ -0,0 +1,6 @@ + + + + https + + \ No newline at end of file diff --git a/vs4win/PracticalApps/Northwind.BlazorServer/Properties/launchSettings.json b/vs4win/PracticalApps/Northwind.BlazorServer/Properties/launchSettings.json index 87e09fc..4899f05 100644 --- a/vs4win/PracticalApps/Northwind.BlazorServer/Properties/launchSettings.json +++ b/vs4win/PracticalApps/Northwind.BlazorServer/Properties/launchSettings.json @@ -8,7 +8,16 @@ } }, "profiles": { - "Northwind.BlazorServer": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5004", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, diff --git a/vs4win/PracticalApps/Northwind.BlazorServer/wwwroot/favicon.ico b/vs4win/PracticalApps/Northwind.BlazorServer/wwwroot/favicon.ico index 63e859b476eff5055e0e557aaa151ca8223fbeef..46d8f404fd35717b377dc3183c4f2a10a94446c7 100644 GIT binary patch literal 15406 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 N{+GX(7KqmZ{{_dnh57&h literal 5430 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 N{+GX(7KqmZ{{_dnh57&h literal 5430 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 N{+GX(7KqmZ{{_dnh57&h literal 0 HcmV?d00001 diff --git a/vs4win/PracticalApps/Northwind.Mvc/Controllers/HomeController.cs b/vs4win/PracticalApps/Northwind.Mvc/Controllers/HomeController.cs index afabb0c..068b4a9 100644 --- a/vs4win/PracticalApps/Northwind.Mvc/Controllers/HomeController.cs +++ b/vs4win/PracticalApps/Northwind.Mvc/Controllers/HomeController.cs @@ -75,14 +75,16 @@ namespace Northwind.Mvc.Controllers return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); } - public async Task ProductDetail(int? id) + public async Task ProductDetail(int? id, string alertstyle = "success") { + ViewData["alertstyle"] = alertstyle; + if (!id.HasValue) { return BadRequest("You must pass a product ID in the route, for example, /Home/ProductDetail/21"); } - Product? model = await db.Products + Product? model = await db.Products.Include(p => p.Category) .SingleOrDefaultAsync(p => p.ProductId == id); if (model is null) diff --git a/vs4win/PracticalApps/Northwind.Mvc/Controllers/RolesController.cs b/vs4win/PracticalApps/Northwind.Mvc/Controllers/RolesController.cs index bc7c762..f399edc 100644 --- a/vs4win/PracticalApps/Northwind.Mvc/Controllers/RolesController.cs +++ b/vs4win/PracticalApps/Northwind.Mvc/Controllers/RolesController.cs @@ -25,7 +25,7 @@ public class RolesController : Controller { await roleManager.CreateAsync(new IdentityRole(AdminRole)); } - IdentityUser user = await userManager.FindByEmailAsync(UserEmail); + IdentityUser? user = await userManager.FindByEmailAsync(UserEmail); if (user == null) { diff --git a/vs4win/PracticalApps/Northwind.Mvc/Northwind.Mvc.csproj b/vs4win/PracticalApps/Northwind.Mvc/Northwind.Mvc.csproj index c78c3b2..8a25b34 100644 --- a/vs4win/PracticalApps/Northwind.Mvc/Northwind.Mvc.csproj +++ b/vs4win/PracticalApps/Northwind.Mvc/Northwind.Mvc.csproj @@ -5,7 +5,11 @@ enable enable aspnet-Northwind.Mvc-32868776-9AE7-4BFC-8CB8-DFDC975ABEA5 - + + + preview + true + @@ -25,9 +29,14 @@ - + + + + + + true + PreserveNewest + diff --git a/vs4win/PracticalApps/Northwind.Mvc/Northwind.Mvc.csproj.user b/vs4win/PracticalApps/Northwind.Mvc/Northwind.Mvc.csproj.user new file mode 100644 index 0000000..80ee073 --- /dev/null +++ b/vs4win/PracticalApps/Northwind.Mvc/Northwind.Mvc.csproj.user @@ -0,0 +1,9 @@ + + + + ProjectDebugger + + + https + + \ No newline at end of file diff --git a/vs4win/PracticalApps/Northwind.Mvc/Program.cs b/vs4win/PracticalApps/Northwind.Mvc/Program.cs index f504bd2..536c399 100644 --- a/vs4win/PracticalApps/Northwind.Mvc/Program.cs +++ b/vs4win/PracticalApps/Northwind.Mvc/Program.cs @@ -38,6 +38,12 @@ else // if you are using SQLite default is ..\Northwind.db builder.Services.AddNorthwindContext(); +builder.Services.AddOutputCache(options => +{ + options.DefaultExpirationTimeSpan = TimeSpan.FromSeconds(20); + options.AddPolicy("views", p => p.VaryByQuery("")); +}); + builder.Services.AddHttpClient(name: "Northwind.WebApi", configureClient: options => { @@ -77,16 +83,23 @@ else app.UseHttpsRedirection(); app.UseStaticFiles(); - app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); +app.UseOutputCache(); + app.MapControllerRoute( name: "default", - pattern: "{controller=Home}/{action=Index}/{id?}"); + pattern: "{controller=Home}/{action=Index}/{id?}") + .CacheOutput("views"); + app.MapRazorPages(); +app.MapGet("/notcached", () => DateTime.Now.ToString()); + +app.MapGet("/cached", () => DateTime.Now.ToString()).CacheOutput(); + // Section 4 - start the host web server listening for HTTP requests app.Run(); diff --git a/vs4win/PracticalApps/Northwind.Mvc/Properties/launchSettings.json b/vs4win/PracticalApps/Northwind.Mvc/Properties/launchSettings.json index cf08137..878352d 100644 --- a/vs4win/PracticalApps/Northwind.Mvc/Properties/launchSettings.json +++ b/vs4win/PracticalApps/Northwind.Mvc/Properties/launchSettings.json @@ -8,7 +8,16 @@ } }, "profiles": { - "Northwind.Mvc": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, diff --git a/vs4win/PracticalApps/Northwind.Mvc/Views/Home/ProductDetail.cshtml b/vs4win/PracticalApps/Northwind.Mvc/Views/Home/ProductDetail.cshtml index 5e4ebce..f060f61 100644 --- a/vs4win/PracticalApps/Northwind.Mvc/Views/Home/ProductDetail.cshtml +++ b/vs4win/PracticalApps/Northwind.Mvc/Views/Home/ProductDetail.cshtml @@ -3,6 +3,8 @@ ViewData["Title"] = "Product Detail - " + Model.ProductName; }

Product Detail

+

+ @DateTime.Now.ToLongTimeString()


@@ -10,8 +12,8 @@
@Model.ProductId
Product Name
@Model.ProductName
-
Category Id
-
@Model.CategoryId
+
Category
+
@Model.CategoryId - @Model.Category.CategoryName
Unit Price
@Model.UnitPrice.Value.ToString("C")
Units In Stock
diff --git a/vs4win/PracticalApps/Northwind.Mvc/appsettings.Development.json b/vs4win/PracticalApps/Northwind.Mvc/appsettings.Development.json index 0c208ae..daa1dc0 100644 --- a/vs4win/PracticalApps/Northwind.Mvc/appsettings.Development.json +++ b/vs4win/PracticalApps/Northwind.Mvc/appsettings.Development.json @@ -2,7 +2,8 @@ "Logging": { "LogLevel": { "Default": "Information", - "Microsoft.AspNetCore": "Warning" + "Microsoft.AspNetCore": "Warning", + "Microsoft.AspNetCore.OutputCaching": "Information" } } } diff --git a/vs4win/PracticalApps/Northwind.Mvc/wwwroot/favicon.ico b/vs4win/PracticalApps/Northwind.Mvc/wwwroot/favicon.ico index 63e859b476eff5055e0e557aaa151ca8223fbeef..46d8f404fd35717b377dc3183c4f2a10a94446c7 100644 GIT binary patch literal 15406 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 N{+GX(7KqmZ{{_dnh57&h literal 5430 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 + + + + diff --git a/vs4win/PracticalApps/Northwind.Web/Northwind.Web.csproj.user b/vs4win/PracticalApps/Northwind.Web/Northwind.Web.csproj.user new file mode 100644 index 0000000..80ee073 --- /dev/null +++ b/vs4win/PracticalApps/Northwind.Web/Northwind.Web.csproj.user @@ -0,0 +1,9 @@ + + + + ProjectDebugger + + + https + + \ No newline at end of file diff --git a/vs4win/PracticalApps/Northwind.Web/Program.cs b/vs4win/PracticalApps/Northwind.Web/Program.cs index 46cadcb..6652eff 100644 --- a/vs4win/PracticalApps/Northwind.Web/Program.cs +++ b/vs4win/PracticalApps/Northwind.Web/Program.cs @@ -7,6 +7,9 @@ var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages(); builder.Services.AddNorthwindContext(); +builder.Services.AddRequestDecompression(); + +/* builder.WebHost.ConfigureKestrel((context, options) => { options.ListenAnyIP(5001, listenOptions => @@ -15,6 +18,7 @@ builder.WebHost.ConfigureKestrel((context, options) => listenOptions.UseHttps(); // HTTP/3 requires secure connections }); }); +*/ var app = builder.Build(); @@ -51,6 +55,8 @@ app.Use(async (HttpContext context, Func next) => app.UseHttpsRedirection(); +app.UseRequestDecompression(); + app.UseDefaultFiles(); // index.html, default.html, and so on app.UseStaticFiles(); diff --git a/vs4win/PracticalApps/Northwind.Web/Properties/launchSettings.json b/vs4win/PracticalApps/Northwind.Web/Properties/launchSettings.json index 69fd904..98e0dbb 100644 --- a/vs4win/PracticalApps/Northwind.Web/Properties/launchSettings.json +++ b/vs4win/PracticalApps/Northwind.Web/Properties/launchSettings.json @@ -8,7 +8,16 @@ } }, "profiles": { - "Northwind.Web": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, diff --git a/vs4win/PracticalApps/Northwind.Web/wwwroot/favicon.ico b/vs4win/PracticalApps/Northwind.Web/wwwroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..46d8f404fd35717b377dc3183c4f2a10a94446c7 GIT binary patch literal 15406 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 N{+GX(7KqmZ{{_dnh57&h literal 0 HcmV?d00001 diff --git a/vs4win/PracticalApps/Northwind.WebApi/Northwind.WebApi.csproj b/vs4win/PracticalApps/Northwind.WebApi/Northwind.WebApi.csproj index 73d280e..d7159bd 100644 --- a/vs4win/PracticalApps/Northwind.WebApi/Northwind.WebApi.csproj +++ b/vs4win/PracticalApps/Northwind.WebApi/Northwind.WebApi.csproj @@ -14,6 +14,7 @@ + diff --git a/vs4win/PracticalApps/Northwind.WebApi/Northwind.WebApi.csproj.user b/vs4win/PracticalApps/Northwind.WebApi/Northwind.WebApi.csproj.user new file mode 100644 index 0000000..9ff5820 --- /dev/null +++ b/vs4win/PracticalApps/Northwind.WebApi/Northwind.WebApi.csproj.user @@ -0,0 +1,6 @@ + + + + https + + \ No newline at end of file diff --git a/vs4win/PracticalApps/Northwind.WebApi/Program.cs b/vs4win/PracticalApps/Northwind.WebApi/Program.cs index b0e7fc0..3297665 100644 --- a/vs4win/PracticalApps/Northwind.WebApi/Program.cs +++ b/vs4win/PracticalApps/Northwind.WebApi/Program.cs @@ -38,8 +38,11 @@ builder.Services.AddSwaggerGen(); builder.Services.AddScoped(); builder.Services.AddHealthChecks() - .AddDbContextCheck(); + .AddDbContextCheck() + // execute SELECT 1 using the specified connection string + .AddSqlServer("Data Source=.;Initial Catalog=Northwind;Integrated Security=true;"); +/* builder.WebHost.ConfigureKestrel((context, options) => { options.ListenAnyIP(5002, listenOptions => @@ -48,6 +51,7 @@ builder.WebHost.ConfigureKestrel((context, options) => listenOptions.UseHttps(); // HTTP/3 requires secure connections }); }); +*/ var app = builder.Build(); diff --git a/vs4win/PracticalApps/Northwind.WebApi/Properties/launchSettings.json b/vs4win/PracticalApps/Northwind.WebApi/Properties/launchSettings.json index 2ced0db..3092c1d 100644 --- a/vs4win/PracticalApps/Northwind.WebApi/Properties/launchSettings.json +++ b/vs4win/PracticalApps/Northwind.WebApi/Properties/launchSettings.json @@ -9,10 +9,20 @@ } }, "profiles": { - "Northwind.WebApi": { + "http": { "commandName": "Project", "dotnetRunMessages": true, - "launchBrowser": false, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, "launchUrl": "swagger", "applicationUrl": "https://localhost:5002", "environmentVariables": { diff --git a/vs4win/PracticalApps/Northwind.WebApi/appsettings.Development.json b/vs4win/PracticalApps/Northwind.WebApi/appsettings.Development.json index 0c208ae..3e805ed 100644 --- a/vs4win/PracticalApps/Northwind.WebApi/appsettings.Development.json +++ b/vs4win/PracticalApps/Northwind.WebApi/appsettings.Development.json @@ -2,7 +2,8 @@ "Logging": { "LogLevel": { "Default": "Information", - "Microsoft.AspNetCore": "Warning" + "Microsoft.AspNetCore": "Warning", + "Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information" } } } diff --git a/vs4win/PracticalApps/Northwind.WebApi/wwwroot/favicon.ico b/vs4win/PracticalApps/Northwind.WebApi/wwwroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..46d8f404fd35717b377dc3183c4f2a10a94446c7 GIT binary patch literal 15406 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 N{+GX(7KqmZ{{_dnh57&h literal 0 HcmV?d00001 diff --git a/vs4win/PracticalApps/favicon_io.zip b/vs4win/PracticalApps/favicon_io.zip new file mode 100644 index 0000000000000000000000000000000000000000..df7092a4bac457b9ea9b997b0aedb4c41537e3b5 GIT binary patch literal 70614 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 + + + + + diff --git a/vscode/PracticalApps/Minimal.WebApi/Properties/launchSettings.json b/vscode/PracticalApps/Minimal.WebApi/Properties/launchSettings.json index 2137b19..af47987 100644 --- a/vscode/PracticalApps/Minimal.WebApi/Properties/launchSettings.json +++ b/vscode/PracticalApps/Minimal.WebApi/Properties/launchSettings.json @@ -9,11 +9,21 @@ } }, "profiles": { - "Minimal.WebApi": { + "http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, - "launchUrl": "weatherforecast", + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", "applicationUrl": "https://localhost:5003", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" diff --git a/vscode/PracticalApps/Minimal.WebApi/wwwroot/favicon.ico b/vscode/PracticalApps/Minimal.WebApi/wwwroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..46d8f404fd35717b377dc3183c4f2a10a94446c7 GIT binary patch literal 15406 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 N{+GX(7KqmZ{{_dnh57&h literal 0 HcmV?d00001 diff --git a/vscode/PracticalApps/Northwind.BlazorServer/Northwind.BlazorServer.csproj b/vscode/PracticalApps/Northwind.BlazorServer/Northwind.BlazorServer.csproj index a3ec562..c5f3964 100644 --- a/vscode/PracticalApps/Northwind.BlazorServer/Northwind.BlazorServer.csproj +++ b/vscode/PracticalApps/Northwind.BlazorServer/Northwind.BlazorServer.csproj @@ -6,6 +6,14 @@ enable + + + + + + + + diff --git a/vscode/PracticalApps/Northwind.BlazorServer/Northwind.BlazorServer.csproj.user b/vscode/PracticalApps/Northwind.BlazorServer/Northwind.BlazorServer.csproj.user new file mode 100644 index 0000000..9ff5820 --- /dev/null +++ b/vscode/PracticalApps/Northwind.BlazorServer/Northwind.BlazorServer.csproj.user @@ -0,0 +1,6 @@ + + + + https + + \ No newline at end of file diff --git a/vscode/PracticalApps/Northwind.BlazorServer/Properties/launchSettings.json b/vscode/PracticalApps/Northwind.BlazorServer/Properties/launchSettings.json index 87e09fc..4899f05 100644 --- a/vscode/PracticalApps/Northwind.BlazorServer/Properties/launchSettings.json +++ b/vscode/PracticalApps/Northwind.BlazorServer/Properties/launchSettings.json @@ -8,7 +8,16 @@ } }, "profiles": { - "Northwind.BlazorServer": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5004", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, diff --git a/vscode/PracticalApps/Northwind.BlazorServer/wwwroot/favicon.ico b/vscode/PracticalApps/Northwind.BlazorServer/wwwroot/favicon.ico index 63e859b476eff5055e0e557aaa151ca8223fbeef..46d8f404fd35717b377dc3183c4f2a10a94446c7 100644 GIT binary patch literal 15406 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 N{+GX(7KqmZ{{_dnh57&h literal 5430 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 N{+GX(7KqmZ{{_dnh57&h literal 5430 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 N{+GX(7KqmZ{{_dnh57&h literal 0 HcmV?d00001 diff --git a/vscode/PracticalApps/Northwind.Mvc/Controllers/HomeController.cs b/vscode/PracticalApps/Northwind.Mvc/Controllers/HomeController.cs index afabb0c..068b4a9 100644 --- a/vscode/PracticalApps/Northwind.Mvc/Controllers/HomeController.cs +++ b/vscode/PracticalApps/Northwind.Mvc/Controllers/HomeController.cs @@ -75,14 +75,16 @@ namespace Northwind.Mvc.Controllers return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); } - public async Task ProductDetail(int? id) + public async Task ProductDetail(int? id, string alertstyle = "success") { + ViewData["alertstyle"] = alertstyle; + if (!id.HasValue) { return BadRequest("You must pass a product ID in the route, for example, /Home/ProductDetail/21"); } - Product? model = await db.Products + Product? model = await db.Products.Include(p => p.Category) .SingleOrDefaultAsync(p => p.ProductId == id); if (model is null) diff --git a/vscode/PracticalApps/Northwind.Mvc/Controllers/RolesController.cs b/vscode/PracticalApps/Northwind.Mvc/Controllers/RolesController.cs index bc7c762..f399edc 100644 --- a/vscode/PracticalApps/Northwind.Mvc/Controllers/RolesController.cs +++ b/vscode/PracticalApps/Northwind.Mvc/Controllers/RolesController.cs @@ -25,7 +25,7 @@ public class RolesController : Controller { await roleManager.CreateAsync(new IdentityRole(AdminRole)); } - IdentityUser user = await userManager.FindByEmailAsync(UserEmail); + IdentityUser? user = await userManager.FindByEmailAsync(UserEmail); if (user == null) { diff --git a/vscode/PracticalApps/Northwind.Mvc/Northwind.Mvc.csproj b/vscode/PracticalApps/Northwind.Mvc/Northwind.Mvc.csproj index c78c3b2..8a25b34 100644 --- a/vscode/PracticalApps/Northwind.Mvc/Northwind.Mvc.csproj +++ b/vscode/PracticalApps/Northwind.Mvc/Northwind.Mvc.csproj @@ -5,7 +5,11 @@ enable enable aspnet-Northwind.Mvc-32868776-9AE7-4BFC-8CB8-DFDC975ABEA5 - + + + preview + true + @@ -25,9 +29,14 @@ - + + + + + + true + PreserveNewest + diff --git a/vscode/PracticalApps/Northwind.Mvc/Northwind.Mvc.csproj.user b/vscode/PracticalApps/Northwind.Mvc/Northwind.Mvc.csproj.user new file mode 100644 index 0000000..80ee073 --- /dev/null +++ b/vscode/PracticalApps/Northwind.Mvc/Northwind.Mvc.csproj.user @@ -0,0 +1,9 @@ + + + + ProjectDebugger + + + https + + \ No newline at end of file diff --git a/vscode/PracticalApps/Northwind.Mvc/Program.cs b/vscode/PracticalApps/Northwind.Mvc/Program.cs index f504bd2..536c399 100644 --- a/vscode/PracticalApps/Northwind.Mvc/Program.cs +++ b/vscode/PracticalApps/Northwind.Mvc/Program.cs @@ -38,6 +38,12 @@ else // if you are using SQLite default is ..\Northwind.db builder.Services.AddNorthwindContext(); +builder.Services.AddOutputCache(options => +{ + options.DefaultExpirationTimeSpan = TimeSpan.FromSeconds(20); + options.AddPolicy("views", p => p.VaryByQuery("")); +}); + builder.Services.AddHttpClient(name: "Northwind.WebApi", configureClient: options => { @@ -77,16 +83,23 @@ else app.UseHttpsRedirection(); app.UseStaticFiles(); - app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); +app.UseOutputCache(); + app.MapControllerRoute( name: "default", - pattern: "{controller=Home}/{action=Index}/{id?}"); + pattern: "{controller=Home}/{action=Index}/{id?}") + .CacheOutput("views"); + app.MapRazorPages(); +app.MapGet("/notcached", () => DateTime.Now.ToString()); + +app.MapGet("/cached", () => DateTime.Now.ToString()).CacheOutput(); + // Section 4 - start the host web server listening for HTTP requests app.Run(); diff --git a/vscode/PracticalApps/Northwind.Mvc/Properties/launchSettings.json b/vscode/PracticalApps/Northwind.Mvc/Properties/launchSettings.json index cf08137..878352d 100644 --- a/vscode/PracticalApps/Northwind.Mvc/Properties/launchSettings.json +++ b/vscode/PracticalApps/Northwind.Mvc/Properties/launchSettings.json @@ -8,7 +8,16 @@ } }, "profiles": { - "Northwind.Mvc": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, diff --git a/vscode/PracticalApps/Northwind.Mvc/Views/Home/ProductDetail.cshtml b/vscode/PracticalApps/Northwind.Mvc/Views/Home/ProductDetail.cshtml index 5e4ebce..f060f61 100644 --- a/vscode/PracticalApps/Northwind.Mvc/Views/Home/ProductDetail.cshtml +++ b/vscode/PracticalApps/Northwind.Mvc/Views/Home/ProductDetail.cshtml @@ -3,6 +3,8 @@ ViewData["Title"] = "Product Detail - " + Model.ProductName; }

Product Detail

+

+ @DateTime.Now.ToLongTimeString()


@@ -10,8 +12,8 @@
@Model.ProductId
Product Name
@Model.ProductName
-
Category Id
-
@Model.CategoryId
+
Category
+
@Model.CategoryId - @Model.Category.CategoryName
Unit Price
@Model.UnitPrice.Value.ToString("C")
Units In Stock
diff --git a/vscode/PracticalApps/Northwind.Mvc/appsettings.Development.json b/vscode/PracticalApps/Northwind.Mvc/appsettings.Development.json index 0c208ae..daa1dc0 100644 --- a/vscode/PracticalApps/Northwind.Mvc/appsettings.Development.json +++ b/vscode/PracticalApps/Northwind.Mvc/appsettings.Development.json @@ -2,7 +2,8 @@ "Logging": { "LogLevel": { "Default": "Information", - "Microsoft.AspNetCore": "Warning" + "Microsoft.AspNetCore": "Warning", + "Microsoft.AspNetCore.OutputCaching": "Information" } } } diff --git a/vscode/PracticalApps/Northwind.Mvc/wwwroot/favicon.ico b/vscode/PracticalApps/Northwind.Mvc/wwwroot/favicon.ico index 63e859b476eff5055e0e557aaa151ca8223fbeef..46d8f404fd35717b377dc3183c4f2a10a94446c7 100644 GIT binary patch literal 15406 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 N{+GX(7KqmZ{{_dnh57&h literal 5430 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 + + + + diff --git a/vscode/PracticalApps/Northwind.Web/Northwind.Web.csproj.user b/vscode/PracticalApps/Northwind.Web/Northwind.Web.csproj.user new file mode 100644 index 0000000..80ee073 --- /dev/null +++ b/vscode/PracticalApps/Northwind.Web/Northwind.Web.csproj.user @@ -0,0 +1,9 @@ + + + + ProjectDebugger + + + https + + \ No newline at end of file diff --git a/vscode/PracticalApps/Northwind.Web/Program.cs b/vscode/PracticalApps/Northwind.Web/Program.cs index 46cadcb..6652eff 100644 --- a/vscode/PracticalApps/Northwind.Web/Program.cs +++ b/vscode/PracticalApps/Northwind.Web/Program.cs @@ -7,6 +7,9 @@ var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages(); builder.Services.AddNorthwindContext(); +builder.Services.AddRequestDecompression(); + +/* builder.WebHost.ConfigureKestrel((context, options) => { options.ListenAnyIP(5001, listenOptions => @@ -15,6 +18,7 @@ builder.WebHost.ConfigureKestrel((context, options) => listenOptions.UseHttps(); // HTTP/3 requires secure connections }); }); +*/ var app = builder.Build(); @@ -51,6 +55,8 @@ app.Use(async (HttpContext context, Func next) => app.UseHttpsRedirection(); +app.UseRequestDecompression(); + app.UseDefaultFiles(); // index.html, default.html, and so on app.UseStaticFiles(); diff --git a/vscode/PracticalApps/Northwind.Web/Properties/launchSettings.json b/vscode/PracticalApps/Northwind.Web/Properties/launchSettings.json index 69fd904..98e0dbb 100644 --- a/vscode/PracticalApps/Northwind.Web/Properties/launchSettings.json +++ b/vscode/PracticalApps/Northwind.Web/Properties/launchSettings.json @@ -8,7 +8,16 @@ } }, "profiles": { - "Northwind.Web": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, diff --git a/vscode/PracticalApps/Northwind.Web/wwwroot/favicon.ico b/vscode/PracticalApps/Northwind.Web/wwwroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..46d8f404fd35717b377dc3183c4f2a10a94446c7 GIT binary patch literal 15406 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 N{+GX(7KqmZ{{_dnh57&h literal 0 HcmV?d00001 diff --git a/vscode/PracticalApps/Northwind.WebApi/Northwind.WebApi.csproj b/vscode/PracticalApps/Northwind.WebApi/Northwind.WebApi.csproj index 73d280e..d7159bd 100644 --- a/vscode/PracticalApps/Northwind.WebApi/Northwind.WebApi.csproj +++ b/vscode/PracticalApps/Northwind.WebApi/Northwind.WebApi.csproj @@ -14,6 +14,7 @@ + diff --git a/vscode/PracticalApps/Northwind.WebApi/Northwind.WebApi.csproj.user b/vscode/PracticalApps/Northwind.WebApi/Northwind.WebApi.csproj.user new file mode 100644 index 0000000..9ff5820 --- /dev/null +++ b/vscode/PracticalApps/Northwind.WebApi/Northwind.WebApi.csproj.user @@ -0,0 +1,6 @@ + + + + https + + \ No newline at end of file diff --git a/vscode/PracticalApps/Northwind.WebApi/Program.cs b/vscode/PracticalApps/Northwind.WebApi/Program.cs index b0e7fc0..3297665 100644 --- a/vscode/PracticalApps/Northwind.WebApi/Program.cs +++ b/vscode/PracticalApps/Northwind.WebApi/Program.cs @@ -38,8 +38,11 @@ builder.Services.AddSwaggerGen(); builder.Services.AddScoped(); builder.Services.AddHealthChecks() - .AddDbContextCheck(); + .AddDbContextCheck() + // execute SELECT 1 using the specified connection string + .AddSqlServer("Data Source=.;Initial Catalog=Northwind;Integrated Security=true;"); +/* builder.WebHost.ConfigureKestrel((context, options) => { options.ListenAnyIP(5002, listenOptions => @@ -48,6 +51,7 @@ builder.WebHost.ConfigureKestrel((context, options) => listenOptions.UseHttps(); // HTTP/3 requires secure connections }); }); +*/ var app = builder.Build(); diff --git a/vscode/PracticalApps/Northwind.WebApi/Properties/launchSettings.json b/vscode/PracticalApps/Northwind.WebApi/Properties/launchSettings.json index 2ced0db..3092c1d 100644 --- a/vscode/PracticalApps/Northwind.WebApi/Properties/launchSettings.json +++ b/vscode/PracticalApps/Northwind.WebApi/Properties/launchSettings.json @@ -9,10 +9,20 @@ } }, "profiles": { - "Northwind.WebApi": { + "http": { "commandName": "Project", "dotnetRunMessages": true, - "launchBrowser": false, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, "launchUrl": "swagger", "applicationUrl": "https://localhost:5002", "environmentVariables": { diff --git a/vscode/PracticalApps/Northwind.WebApi/appsettings.Development.json b/vscode/PracticalApps/Northwind.WebApi/appsettings.Development.json index 0c208ae..3e805ed 100644 --- a/vscode/PracticalApps/Northwind.WebApi/appsettings.Development.json +++ b/vscode/PracticalApps/Northwind.WebApi/appsettings.Development.json @@ -2,7 +2,8 @@ "Logging": { "LogLevel": { "Default": "Information", - "Microsoft.AspNetCore": "Warning" + "Microsoft.AspNetCore": "Warning", + "Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information" } } } diff --git a/vscode/PracticalApps/Northwind.WebApi/wwwroot/favicon.ico b/vscode/PracticalApps/Northwind.WebApi/wwwroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..46d8f404fd35717b377dc3183c4f2a10a94446c7 GIT binary patch literal 15406 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 N{+GX(7KqmZ{{_dnh57&h literal 0 HcmV?d00001 diff --git a/vscode/PracticalApps/favicon_io.zip b/vscode/PracticalApps/favicon_io.zip new file mode 100644 index 0000000000000000000000000000000000000000..df7092a4bac457b9ea9b997b0aedb4c41537e3b5 GIT binary patch literal 70614 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