/practical-aspnetcore

Practical samples of ASP.NET Core 2.1, 2.2, 3.1, and 5.0 projects you can use. Readme contains explanations on all projects.

Primary LanguageC#MIT LicenseMIT

Samples for ASP.NET Core 5.0 (321)

The goal of this project is to enable .NET programmers to learn the new ASP.NET Core stack from the ground up directly from code. There is so much power in the underlying ASP.NET Core stack. Don't miss them!

I highly recommend using Visual Studio Code to play around with these samples but it is not required. You can use Visual Studio 2019 as well.

Previous versions

3.1 LTS, 2.1 LTS

Sections

Section
Blazor Client Side (Web Assembly) (Components, Data Binding) (20) Middleware (14)
Blazor Server Side (Localization) (15) MVC (Localization, Routing, Razor Class Library, Tag Helpers, View Component, etc) (46)
Caching (5) Razor Pages (9)
Configurations (7) Orchard Core (4)
Dependency Injection (4) Request (Form, Cookies, Query String, Headers) (14)
Diagnostics (6) Response (4)
Endpoint Routing (32) Static Files and File Provider (9)
Features (10) System.Text.Json (11)
Health Check (6) Startup (12)
IHttpClientFactory (4) URL Redirect/Rewrite (6)
IHostedService (1) Syndications (3)
Generic Hosting (9) Uri Helper (5)
gRPC (including grpc-Web) (12) Web Sockets (5)
Logging (3) Web Utilities (3)
Localization and Globalization (6) For Data Access samples, go to the excellent ORM Cookbook.
Single File Application (1) Orleans (12)
Path String (HttpContext.Request.Path) (1)
138 156

How to run these samples

To run these samples, simply open your command line console, go to each folder and execute dotnet watch run.

Foundation ASP.NET Core 5 Samples

Basic (6)

  • Hello World

    This is the simplest ASP.NET Core application you can create. An ASP.NET Core application includes a super fast web server called Kestrel. In a few lines of code we set up the web server and a simple app.

    In this sample we use a Startup class to configure your application. This is the canonical way of doing thing.

  • Hello World - 2

    This is the equivalent of the previous Hello World sample except that in this case we don't use a Startup class. This way of configuring things is not common.

  • Hello World - 3

    This sample uses C# 9 top level statements.

  • IWebHostConfiguration

    This sample demonstrates the usage of IWebHostEnvironment from Configure method.

  • IHostEnvironment

    This sample shows how to access IHostEnvironment from ConfigureServices.

  • IConfiguration

    This sample demonstrates the usage of IConfiguration from `Configure' method.

Misc (8)

  • Application Environment

    This sample shows how to obtain application environment information (target framework, etc).

  • Show Connection info

    Enumerate the connection information of a HTTP request.

  • Keeping track of anonymous users

    Keep track of anonymous user in your ASP.NET Core (useful in scenario such as keeping track of shopping cart) using ReturnTrue.AspNetCore.Identity.Anonymous library.

  • Password Hasher server

    Give it a string and it will generate a secure hash for you, e.g. localhost:5000?password=mypassword.

  • Integrate Newtonsoft.Json back

    ASP.NET Core has a new built in JSON Serializer/Deserializer. This sample shows how to integrate Newtonsoft.Json back to your project.

  • Version info

    Show various version info of the framework your system is running on.

  • IApplicationLifetime

    Responds to application startup and shutdown.

    We are using IApplicationLifetime that trigger events during application startup and shutdown.

  • CommandLine

    This project shows a simple integration between System.CommandLine, a command line parsing library with ASP.NET Core app.

Server-Sent Events (1)

  • Forever Server

    This server will send a 'hello world' greeting forever.

Markdown (2)

Utils (3)

  • Status Codes

    Here we contrast between the usage of Microsoft.AspNetCore.Http.StatusCodes and System.Net.HttpStatusCode.

  • MediaTypeNames

    This class provides convenient constants for some common MIME types. It's not extensive by any means however MediaTypeNames.Text.Html and MediaTypeNames.Application.Json come handy.

  • MediaTypeNames - 2

    Using FileExtensionContentTypeProvider to obtain the correct MIME type of a filename extension.

Device Detection (1)

The samples in this section rely on Wangkanai.Detection library.

  • Device Detection

    This is the most basic device detection. You will be able to detect whether the client is a desktop or a mobile client.

Image Sharp (1)

All these samples require SixLabors.ImageSharp.Web middleware package. This middleware is an excelent tool to process your day to day image processing need.

  • Image-Sharp

    This example shows how to enable image resizing functionality to your site. It's super easy and the middleware takes care of caching, etc.

Misc