@model directive 70, 73 – 74, 76 – 77, 407
@page directive 68, 84, 90 – 91, 100, 243
access control, with authorization 316
claims-based authorization 297 – 309
ActionResult class 83 – 84, 108 – 109
AddAuthorization method 284, 296
AddModelError method 147 – 148
AddPageRoute method 100 – 103, 105, 110
AddRazorPages method 188, 196, 205
Admin role 294, 296 – 297, 307 – 308, 311, 314 – 315
AJAX (Asynchronous HTTP requests)
calling page handlers from JavaScript
posting to page handler 324 – 328
using partial page to return HTML 319 – 324
working with JsonResult 328 – 331
choosing client-side technologies 318 – 319
AllowAnonymousToPage method 290
AllowedForNewUsers LockoutOptions properties 268
AllowedHosts well-known configuration setting 399
AllowedUserNameCharacters property 266
anonymous access, allowing 290
antiforgery custom attribute 154
AppendTrailingSlash property 110
accessing settings programmatically by key 400 – 401
appSettings.json file 399 – 400
binding directly to POCOs 403 – 404
in-memory caching with IMemoryCache 409 – 412
environments 392 – 398, 404 – 405
environment tag helper 397 – 398
IHostEnvironment service 396 – 397
registering services conditionally for each 395 – 396
understanding and managing 392 – 393
application request pipeline 39 – 40
classes 45 – 48
WebApplication1.csproj file 28 – 29
modifying to include dynamic content 25 – 26
application publishing 412 – 418
self-contained and framework dependent 412 – 413
enabling stdout logging 417 – 418
fixing SDK version used for publishing 418
locked assemblies and app_offline files 416 – 417
suppressing language folders 417
application request pipeline 39 – 40
broken access control 375 – 379
cross-site request forgery 376 – 379
incorrect security policies 375 – 376
cryptographic failures 379 – 384
plain-text passwords 379 – 381
using PasswordHasher without Identity UI 381 – 384
including HSTS header in production 374 – 375
SSL/TLS certificates 371 – 372
using in development 372 – 374
cross-site scripting 387 – 389
application troubleshooting 368
exception management 343 – 347
developer exception page 343 – 345
ExceptionHandler middleware 345 – 347
applying log filter rules 358 – 359
structured logging with Serilog 363 – 367
StatusCodePages middleware 347 – 353
WithRedirects method 348 – 350
WithReExecute method 350 – 353
ApplyFormatInEditMode property 162
appSettings.json file 399 – 400
ASP.NET Core Identity 259 – 265
configuring DbContext 261 – 262
enabling email confirmation 277 – 281
scaffolding and customizing UI 269 – 276
using PasswordHasher without UI 381 – 384
ASP.NET Core in Action (Lock) 35, 71
ASP.NET Core Security (Wenz) 389
ASPNETCORE_ENVIRONMENT variable 392
AspNetUserClaims table 262, 299
AspNetUsers table 262, 264 – 265, 267, 269, 276
AttributeRouteModel property 102
ASP.NET Core Identity 259 – 265
configuring DbContext 261 – 262
applying simple authorization 285 – 289
claims-based authorization 297 – 309
adding claims to users 298 – 301
custom requirements and handlers 304 – 308
using assertions for complex requirements 303 – 304
using policies to enforce 302 – 303
applying authorization to UI 314 – 315
creating requirement and handler 310 – 314
using policies to apply role checks 296 – 297
AuthorizationHandler<TRequirement> class 307
AuthorizationHandlerContext class 305
AuthorizationHandlerContext object 304
AuthorizationPolicyBuilder.RequireRole method 302
AuthorizationResult object 312
Authorize attribute 286, 288 – 289, 296, 315, 336, 376
AuthorizeAreaFolder method 289
AuthorizeFolder method 289 – 290, 296 – 297
AuthorizeUserAsync method 312 – 313
BindProperties attribute 126 – 127
BindProperty attribute 125 – 127, 129, 131, 154, 161, 165, 236, 324, 382, 388
Blazor in Action (Sainty) 4
BookingInputModel parameter 333
Boolean multiple attribute 171
Boolean Succeeded property 312
Bootstrap img-fluid CSS class 185
broken access control 375 – 379
cross-site request forgery 376 – 379
incorrect security policies 375 – 376
-c, - -configuration <CONFIGURATION> option 413
CA (certificate authority) 371
in-memory caching with IMemoryCache 409 – 412
captive dependencies 201 – 202
claims 256, 284, 297
claims-based authentication 256
claims-based authorization 297 – 309
adding claims to users 298 – 301
custom requirements and handlers 304 – 308
creating separate handler class 305 – 307
using multiple handlers for requirement 307 – 308
using assertions for complex requirements 303 – 304
using policies to enforce 302 – 303
ClaimTypes.GivenName claim 298
ClaimTypes.NameIdentifier claim 298
application publishing 413 – 414
scaffolding CRUD pages 233 – 234
calling page handlers from JavaScript 319 – 331
posting to page handler 324 – 328
using partial page to return HTML 319 – 324
working with JsonResult 328 – 331
minimal request handling APIs 331 – 337
route handler authorization 336 – 337
client-side validation 142 – 146
binding complex collections 134 – 140
explicit index approach 136 – 140
sequential index approach 134 – 136
binding simple collections 132 – 133
CompareFirstLetterAttribute C# class 149
Configure<TService> method 403
ConnectionStrings property 216
ContentLength property 38 – 39
control container inversion 195 – 205
captive dependencies 201 – 202
registering multiple implementations 203 – 205
Country class 130, 136, 174, 213
CountryConfiguration class 220
CreateAsync method 240, 273, 292, 411
CreateModel class 128, 165, 168, 182, 189, 192, 195, 388
cross-platform functionality 5
cross-site scripting (XSS) 387 – 389
CRUD pages, scaffolding 231 – 237
working with scaffolded pages 235 – 237
cryptographic failures 379 – 384
plain-text passwords 379 – 381
using PasswordHasher without Identity UI 381 – 384
CSRF (cross-site request forgery) 376 – 379
data annotation attributes 160 – 161
DataTypeAttribute attribute 160 – 161
DisplayAttribute attribute 163 – 164
data-val attribute 144 – 145, 159
data-val-required attribute 159
DataAnnotation class 140 – 142
- -dataContext | -dc option 233
DataTypeAttribute attribute 160 – 161
Date Data Type enumeration 160
DateTime PageModel property 161
datetime-local input type 156, 161
configuring services 261 – 262
DbContext OnModelCreating method 218
DbContext.Remove method 246 – 247
DefaultLockoutTimeSpan LockoutOptions properties 268
denial of service (DOS) attacks 180
Description property 388 – 389
DetailErrors configuration entry 32
developer exception page 343 – 345
DeveloperExceptionPage middleware 353
DI (dependency injection) 195 – 208
control container inversion 195 – 205
captive dependencies 201 – 202
registering multiple implementations 203 – 205
GetService and GetRequiredService 206 – 208
dependency inversion 193 – 195
single responsibility principle 188 – 192
DIP (dependency inversion principle) 193 – 195
DisplayAttribute attribute 160, 163 – 164
DOS (denial of service) attacks 180
dotnet dev-certs https - -trust self-signed certificate 22
dotnet ef migrations remove (CLI) command 223
dotnet publish command 412, 414
dotnet restore command 21, 215
dotnet run command 373, 393, 412
dotnet-aspnet-codegenerator tool 233
DRY (don’t repeat yourself) 63
DV (domain validation) certificate 371
dynamic content, modifying pages to include 25 – 26
EF Core (Entity Framework Core) 14 – 251
managing relationships 213 – 215
creating and applying 222 – 224
retrieving multiple records 224 – 227
selecting single records 227 – 231
scaffolding CRUD pages 231 – 237
working with scaffolded pages 235 – 237
EF.Functions.Collate method 230
email confirmation, enabling 277 – 281
EmailAddress Data Type enumeration 160
EmailAddress standalone attribute 161
EndpointRouting middleware 87 – 89
Entity Framework Core in Action (Smith) 210, 250
Entity Framework Core. See EF Core
EntityState.Modified state 240
Environment property 33 – 34, 396
environment tag helper 397 – 398
environments 392 – 398, 404 – 405
environment tag helper 397 – 398
IHostEnvironment service 396 – 397
registering services conditionally for each 395 – 396
understanding and managing 392 – 393
environmentVariables section 393
EventLog built-in provider 353
EventSource built-in provider 353
exception management 343 – 347
developer exception page 343 – 345
ExceptionHandler middleware 345 – 347
ExceptionHandler middleware 345 – 347
explicit dependencies principle 192
-f, - -framework <FRAMEWORK> option 413
FileContentResult ActionResult class 83
FindByIdAsync method 273, 301, 309
FirstOrDefaultAsync method 228
for attribute 70, 155, 158, 165, 169 – 170
form action tag helper 153 – 154
accessing values from Request.Form collection 119 – 121
accessing values from Request.Query collection 121 – 123
binding complex collections 134 – 140
binding complex objects 127 – 131
binding simple collections 132 – 133
user input validation 140 – 150
using with handler parameters 124
using with public properties 125 – 126
post-redirect-get pattern 117 – 119
checkboxes and radio controls 178 – 179
form and form action tag helpers 153 – 154
input and label tag helpers 154 – 164
framework-dependent application 412
Func<dynamic, object> generic delegates 59
GetAllAsync method 191, 225, 249
GetByNameAsync method 227, 231
GetCityOptions method 171, 173 – 174, 189, 191
GetRequiredService method 206 – 208
binding route data to parameters 94 – 96
using model binding with handler parameters 124
HandleRequirementAsync method 307
HasFormContentType property 123
help (- -help or -h) option 413
HiddenInput standalone attribute 161
href attribute 27, 71, 79, 104 – 105, 154
HSTS header, including in production 374 – 375
rendering with expressions 54 – 55
using partial page to return 319 – 324
Html.AntiForgeryToken method 327
Html.GetEnumSelectList method 176, 178
HTTP (Hypertext Transfer Protocol) 35 – 37
HTTP HSTS (Strict-Transport-Security) header 374
HTTPS (Hypertext Transfer Protocol Secure) 370 – 375
including HSTS header in production 374 – 375
SSL/TLS certificates 371 – 372
using in development 372 – 374
I/O (out of process) calls 236
IAuthorizationHandler interface 304
IAuthorizationRequirement interface 304
ICityService interface 193, 195, 224, 228, 410
IConfiguration Bind method 403
IConfiguration service 399 – 400
IConfiguration.Get<T> method 402
Identity UI IEmailSender interface 395
IdentityOptions properties 265
IDEs (integrated development environments) 13
IEmailSender interface 277, 396
IEntityTypeConfiguration class 221
IgnoreAntiforgeryToken attribute 327, 378
IHostEnvironment service 396 – 397
IIS (Internet Information Services) 33, 392
IMemoryCache extension methods 409
IMemoryCache service 409 – 412
IMiddleware interface 47 – 48, 196
IMiddlewareFactory interface 48
cross-site scripting 387 – 389
data annotation attributes for controlling presentation 160 – 161
DataTypeAttribute attribute 160 – 161
DisplayAttribute attribute 163 – 164
formatting rendered date or time value 161 – 162
InputModel class 129, 131, 134, 274
integrated development environments (IDEs) 13
Internet Information Services (IIS) 33, 392
IoC (inversion of control) 193
IOptions<TOptions> interface 403
IOutboundParameterTransformer interface 110
IPageRouteModelConvention interface 101 – 102, 111
IPriceService interface 203 – 205
IPropertyService interface 238, 248
IRouteConstraint interface 99 – 100
IsDevelopment extension method 397
IServiceProvider GetService method 202
IStatusCodeReExecuteFeature feature 352
IUserConfirmation<TUser> interface 267
IUserEmailStore.SetEmailAsync method 275
IUserPhoneNumberStore interface 275
IUserStore.SetUserNameAsync method 275
IWebHostEnvironment service 183, 396
IWebHostEnvironment.ContentRootPath property 416
calling page handlers from 319 – 331
JsonResult constructor 328 – 331
posting to page handler 324 – 328
using partial page to return HTML 319 – 324
JsonResult constructor 328 – 331
DisplayAttribute to control labels 163 – 164
language folders, suppressing 417
assigning Layout property 64 – 66
injecting optional content with sections 66 – 68
LINQ (Language Integrated Query) 211
List<IdentityRole> property 291
Log method 360 – 361, 363
applying log filter rules 358 – 359
enabling stdout logging 417 – 418
structured logging with Serilog 363 – 367
LowercaseQueryStrings property 109
LowercaseUrls Boolean property 109
MapRazorPages method 35, 88, 254
MaxFailedAccessAttempts LockoutOptions properties 268
Message property 78 – 79, 81, 123 – 126, 169
Microsoft AspNetCore category 364
Microsoft.AspNetCore category 359
Microsoft.AspNetCore.Http namespace 180
Microsoft.AspNetCore.Identity package 381
Microsoft.AspNetCore.Identity.EntityFrameworkCore Nuget package 260
Microsoft.AspNetCore.Identity.EntityFrameworkCore package 381
Microsoft.AspNetCore.Identity.UI package 260
Microsoft.AspNetCore.Mvc namespace 161
Microsoft.AspNetCore.Mvc.Rendering namespace 166
Microsoft.EntityFrameworkCore.Design package 222
Microsoft.EntityFrameworkCore.SqlServer package 233
Microsoft.EntityFrameworkCore.Tools package 222
Microsoft.VisualStudio.Web.CodeGeneration.Design templates 232
application request pipeline 39 – 40
classes 45 – 48
convention-based approach 45 – 47
implementing IMiddleware interface 47 – 48
convention-based approach 45 – 47
implementing IMiddleware interface 47 – 48
creating and applying 222 – 224
minimal request handling APIs 331 – 337
route handler authorization 336 – 337
binding complex collections 134 – 140
explicit index approach 136 – 140
sequential index approach 134 – 136
binding complex objects 127 – 131
binding simple collections 132 – 133
accessing values from Request.Form collection 119 – 121
accessing values from Request.Query collection 121 – 123
post-redirect-get pattern 117 – 119
user input validation 140 – 150
client-side validation 142 – 146
custom validation attributes 148 – 150
DataAnnotation attributes 140 – 142
managing complex validation with ModelState 147 – 148
server-side validation 146 – 147
using with handler parameters 124
using with public properties 125 – 126
ModelBuilder ApplyConfiguration method 222
ModelState errors 145, 241, 389
multiple attribute 132, 170 – 171
MVC (model-view-controller) pattern 7 – 8
myUnorderedListTemplate variable 59
-na (or - -namespace) option 24
name attribute 117, 119, 121, 126, 129, 131, 135, 154 – 155
Name property 126, 163, 183, 257, 310, 385
- -namespaceName | -namespace option 234
new PageResult() expression 83
- -noPageModel | -npm option 234
NotFoundResult ActionResult class name 83
nullable annotations and warnings context 28
-o, - -output <OUTPUT_DIR> option 413
OnGet handler 74, 78, 106, 118, 137, 166 – 167, 206, 281
OnGet handler parameter (id) 241
OnGet method 78 – 80, 168, 171
OnGetAsync handler 236, 241, 257, 312
OnGetAsync method 78, 80, 242, 281, 298, 300, 313, 315, 320, 343, 356 – 357, 362, 365, 408, 411
OnGetPropertyDetails handler 366
OnModelCreating method 218, 222, 261
OnPost handler 78, 80, 106, 118, 123 – 125, 131, 134, 147, 154, 167, 206, 255, 281
OnPost method 78, 80, 124, 130, 148, 168, 171, 383
OnPostAsync handler 78, 240 – 242, 246, 256, 275, 281, 388
OnPostBooking page handler 333
OnPostRegister handler method 81
OperationAuthorizationRequirement class 310
configuring LockoutOptions 268
configuring password options 266 – 267
configuring SignInOptions 267 – 268
configuring user options 266, 268
OriginalQueryString property 352
out of process (I/O) calls 236
OV (organization validation) 371
OWASP (Open Web Application Security Project) 180, 370
Package Manager Console (PMC) 215
page-handler attribute 81, 106
PageConventionCollection type 289
PageModel class 18, 27, 72, 107, 110 – 111, 120, 124 – 127, 129, 133 – 134, 146, 189 – 190, 235, 241, 255, 258, 285, 290, 292, 331, 378
handler method parameters 79 – 80
handler method return types 82 – 84
PageModel constructor 204, 206, 355
PageRemote attribute 141 – 142
PageRouteModel conventions 101 – 104
calling page handlers from JavaScript 319 – 331
posting to page handler 324 – 328
using partial page to return HTML 319 – 324
working with JsonResult 328 – 331
developer exception page 343 – 345
assigning Layout property 64 – 66
injecting optional content with sections 66 – 68
modifying to include dynamic content 25 – 26
customizing route and parameter value generation 110 – 114
transforming route parameter values 111 – 114
- -partialView | -partial option 234
Password Data Type enumeration 160
Password property 265 – 266, 275
PasswordHasher class 381 – 384
PasswordHasherOptions class 380
PasswordSignInAsync method 273
PasswordVerificationResult enum 383
PendingRequirements property 306
plain-text passwords 379 – 381
PMC (Package Manager Console) 215
POCOs (plain old CLR objects) 403 – 404
POST method 37, 117 – 119, 121, 123, 166, 179
POST request 78, 118 – 119, 126, 167, 281, 326 – 327, 332
PRG (post-redirect-get) pattern 117 – 119
ProductionEmailService class 400, 402 – 403
Program class 47, 88, 100, 109, 111, 196, 284, 289, 304, 353
WebApplication1.csproj file 28 – 29
Property class 214, 232, 234 – 236, 247, 309
PropertyAuthorizationhandler handler class 311
public properties, using model binding with 125 – 126
retrieving multiple records 224 – 227
selecting single records 227 – 231
-r, - -runtime <RUNTIME_IDENTIFIER> option 413
accessing configuration settings programmatically by key 400 – 401
appSettings.json file 399 – 402
binding directly to POCOs 403 – 404
environments 392 – 398, 404 – 405
application publishing 412 – 418
self-contained and framework dependent 412 – 413
broken access control 375 – 379
cryptographic failures 379 – 384
application troubleshooting 368
exception management 343 – 347
StatusCodePages middleware 347 – 353
ASP.NET Core Identity 259 – 282
claims-based authorization 297 – 309
calling page handlers from JavaScript 319 – 331
minimal request handling APIs 331 – 337
control container inversion 195 – 205
GetService and GetRequiredService 206 – 208
development environment 12 – 14
managing relationships 213 – 215
scaffolding CRUD pages 231 – 237
cross-platform functionality 5
web development frameworks 2 – 4
assigning Layout property 64 – 66
injecting optional content with sections 66 – 68
binding complex collections 134 – 140
binding complex objects 127 – 131
binding simple collections 132 – 133
user input validation 140 – 150
using with handler parameters 124
using with public properties 125 – 126
directives and code blocks 51 – 54
rendering HTML with expressions 54 – 55
rendering literal HTML 57 – 62
checkboxes and radio controls 178 – 179
form and form action tag helpers 153 – 154
input and label tag helpers 154 – 164
uses for 6, 10 – 11
RazorPagesOptions Conventions collection 103
RazorPagesOptions Conventions property 101
RedirectToPage method 108 – 109, 281
RedirectToPagePermanent method 108 – 109
RedirectToPageResult ActionResult class 84
reference navigation property 213
- -referenceScriptLibraries | -scripts option 234
Registration page, amending 274 – 276
RegularExpression attribute 141
- -relativeFolderPath | -outDir option 234
Release default configuration 414
remove-migration (PowerShell) command 223
RenderSectionAsync method 66 – 67
Request object 119 – 120, 123 – 124
request verification token 376
request-based authorization 284
Request.Form collection 119, 121, 152
Request.Query collection 121 – 123
RequestDelegate type specification 42
RequestSizeLimit attribute 180
RequestVerificationToken request header 327
RequireAssertion method 302 – 303
RequireAuthenticatedUser method 302
RequireAuthorization method 336 – 337
RequireClaim(string claimtype, IEmumerable<string> allowedValues) method 302
RequireClaim(string claimtype) method 302
RequireConfirmedAccount SignInOptions property 268
RequireConfirmedEmail SignInOptions property 268
RequireConfirmedPhoneNumber SignInOptions property 268
Required attribute 141, 143, 177, 183
RequireDigit PasswordOptions property 266
RequiredLength PasswordOptions property 266
RequiredUniqueChars PasswordOptions property 267
RequireLowercase PasswordOptions property 266
RequireNonAlphanumeric PasswordOptions property 266
RequireUniqueEmail property 266
RequireUppercase PasswordOptions property 267
resource-based authorization 284
RoleManager.Roles property 309
RoleManager<TRole> service 291
using policies to apply role checks 296 – 297
RolesAuthorizationRequirement type 302
route constraints 96 – 100, 236
binding route data to handler parameters 94 – 96
creating additional routes 100 – 101
PageRouteModel conventions 101 – 104
RouteOptions object 109 – 110, 113
RouteValueDictionary object 92
routing 24, 84 – 114
binding route data to handler parameters 94 – 96
creating additional routes 100 – 101
PageRouteModel conventions 101 – 104
generating redirect URLs from ActionResult 108 – 109
parameter transformers 110 – 114
SaveChangesAsync method 238, 240
SaveToPickupDirectory method 279
working with scaffolded pages 235 – 237
amending Registration page 274 – 276
sections, injecting optional content with 66 – 68
Secure Sockets Layer (SSL) 371
binding enumerations 175 – 177
binding multiple values 170 – 172
setting value of options 167 – 169
working with OptGroups 173 – 175
SelectedCities property 133, 171
SelectedCity property 165, 168 – 169
SelectList constructor 168, 170
self-contained application 412
SendEmailAsync method 277, 360, 399, 402
Server Management Studio (SSMS) 16
server-side validation 146 – 147
service registration 202, 205 – 208
control container inversion 196
GetService and GetRequiredService for accessing 206 – 208
registering multiple implementations 203 – 205
Services property 33 – 34, 188, 196
shadow foreign key property 214
Sign out anchor tag helper 263
SignInAsync method 256, 258, 273
SignInManager identity actor 272
SimpleCityService class 192 – 194
single responsibility principle (SRP) 188 – 192
single-page applications (SPAs) 4, 319
SingleOrDefaultAsync method 228
SmtpSettings section 400 – 403
SPAs (single-page applications) 4, 319
SpecifiedPickupDirectory delivery method 278
SRP (single responsibility principle) 188 – 192
SSL (Secure Sockets Layer) 371
SSL/TLS certificates 371 – 372
SSMS (Server Management Studio) 16
StatusCodePages middleware 347
WithRedirects method 348 – 350
WithReExecute method 350 – 353
StatusCodeResult ActionResult class name 84
StringLength attribute 141, 143, 275
structured logging 342, 353, 358
SuppressXFrameOptionsHeader option 378
rendering HTML with expressions 54 – 55
rendering literal HTML 57 – 62
System.ComponentModel.DataAnnotations namespace 140, 160
tag helpers 27, 70 – 186
checkboxes and radio controls 178 – 179
environment tag helper 397 – 398
form and form action tag helpers 153 – 154
input and label tag helpers 154 – 164
data annotation attributes to control presentation 160 – 161, 163 – 164
formatting rendered date or time value 161 – 162
binding enumerations 175 – 177
binding multiple values 170 – 172
working with OptGroups 173 – 175
Task<TItem> GetOrCreateAsync method 410
templated Razor delegate feature 59
Time Data Type enumeration 160
TLS (Transport Layer Security) protocol 371
TryGetValue<TItem> method 410 – 411
type attribute 132, 153, 155 – 156, 160 – 161
applying authorization to 314 – 315
amending Registration page 274 – 276
UpdateAsync method 240, 243, 273, 411
URI (uniform resource identifier) 37
URL (uniform resource locator) 37
generating redirect URLs from ActionResult 108 – 109
parameter transformers 110 – 114
US FIPS (Federal Information Processing Standards) 380
- -useDefaultLayout | -udl option 234
UseExceptionHandler method 34, 345 – 346
user input validation 140 – 150
client-side validation 142 – 146
custom validation attributes 148 – 150
DataAnnotation attributes 140 – 142
managing complex validation with ModelState 147 – 148
server-side validation 146 – 147
ASP.NET Core Identity 259 – 282
User property 38, 254, 257 – 258, 265 – 266, 303
UserManager identity actor 272
UserManager.GetClaimsAsync method 299
UserName property 260, 267, 276
- -useSqlite | -sqlite option 234
UseStatusCodePages extension method 347
UseStatusCodePagesWithRedirects method 348
UseStatusCodePagesWithReExecute method 348, 350
using directive 28, 42, 46, 52 – 53, 166, 175, 182, 191, 217, 241, 257, 261, 296, 364
ValidateAntiForgeryToken attribute 378
validation-summary attribute 145
validation-summary-valid CSS class 146
ValidationScriptsPartial tag helper 146
VerifyHashedPassword method 384
ViewData dictionary-based feature 73
application publishing 414 – 418
enabling stdout logging 417 – 418
fixing SDK version used for publishing 418
locked assemblies and app_offline files 416 – 417
suppressing language folders 417
scaffolding CRUD pages 232 – 233
VS Code (Visual Studio Code) 13
web development frameworks 2 – 4
WebApplication type 32, 34, 331, 396
WebApplication.CreateBuilder call 364
WebApplication.CreateBuilder method 353, 363, 394, 398
WebApplication1.csproj file 28 – 29
WebApplicationBuilder Environment property 396
WebApplicationBuilder type 395 – 396
WebApplicationOptions object 394
modifying to include dynamic content 25 – 26
WelcomeModel. PageModel classes 73
well-known configuration settings 399
WithRazorPagesRoot extension method 90
WithRedirects method 348 – 350
WithReExecute method 350 – 353
XSS (cross-site scripting) 387 – 389