Migration to ASP.NET Core in .NET 6
- WebApplication and WebApplicationBuilder
- Differences in the hosting model
- Building libraries for ASP.NET Core
- FAQ
- Cheatsheet
using System.Text.Json; | |
using System.Text.Json.Serialization; | |
var data = new[] | |
{ | |
"Hello"u8.ToArray(), | |
"Twitter"u8.ToArray(), | |
"Optimize"u8.ToArray() | |
} | |
.Select(m => new Message(m)).ToArray(); |
using System.Diagnostics; | |
using System.Net.Sockets; | |
using System.Security.Authentication; | |
using Yarp.Telemetry.Consumption; | |
var builder = WebApplication.CreateBuilder(args); | |
builder.Services.AddTelemetryConsumer<TelemetryConsumer>(); | |
var app = builder.Build(); |
public static class ConfigurationBinderExtensions | |
{ | |
public static ValidateOptionsResult BindAndValidate<TOptions>(this IConfiguration configuration, TOptions instance) where TOptions : class, new() | |
{ | |
configuration.Bind(instance); | |
var validateOptions = new DataAnnotationValidateOptions<TOptions>(Options.DefaultName); | |
return validateOptions.Validate(Options.DefaultName, instance); | |
} | |
} |
using System.Data.Common; | |
using System.Runtime.CompilerServices; | |
using System.Text; | |
using Npgsql; | |
GetCatalogItemsSql(null, null, null, 10); | |
void GetCatalogItemsSql(int? catalogBrandId, int? before, int? after, int pageSize) | |
{ | |
// This looks like it would be susceptible to SQL injection, but it's not. |
using System.Collections.Concurrent; | |
using System.Threading.Channels; | |
var channel = Channel.CreateUnbounded<int>(); | |
var syncContext = new SingleThreadedSyncContext(); | |
syncContext.Post(async _ => | |
{ | |
await foreach (var item in channel.Reader.ReadAllAsync()) |
using Microsoft.Extensions.Configuration.Memory; | |
var builder = WebApplication.CreateBuilder(args); | |
builder.Configuration.AddConfigurationDefaults(new() | |
{ | |
{ "request:timeout", "60" } | |
}); | |
var app = builder.Build(); |
using Microsoft.AspNetCore.Http.Features; | |
using Microsoft.AspNetCore.WebUtilities; | |
using ProtoBuf; | |
var builder = WebApplication.CreateBuilder(args); | |
var app = builder.Build(); | |
app.MapGet("/", () => "POST a protobuf message to the /"); | |
app.MapPost("/", (Proto<Person> p) => Results.Extensions.Protobuf(p.Item)) | |
.Accepts<Person>("application/protobuf"); |
using System.IO.Pipelines; | |
using System.Net; | |
using System.Net.Security; | |
using Microsoft.AspNetCore.Connections; | |
using Microsoft.AspNetCore.Connections.Features; | |
using Microsoft.AspNetCore.Http.Features; | |
using Microsoft.AspNetCore.Server.Kestrel.Core; | |
var builder = WebApplication.CreateBuilder(args); |
using System.ComponentModel.DataAnnotations; | |
using Microsoft.EntityFrameworkCore; | |
var builder = WebApplication.CreateBuilder(args); | |
var app = builder.Build(); | |
app.MapPost("/todos", async (CreateTodo createTodo, TodoDb db) => | |
{ | |
// This is where the implicit conversion comes in | |
db.Todos.Add(createTodo); |