梧州网站建设推荐怎么去推广自己的公司
11. 配置热更新
- 技术知识:在 .NET Core 中,配置文件(如
appsettings.json
)修改后,应用程序能自动加载新配置,无需重启应用,这提高了运维效率。
Program.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;// 定义配置类
public class MyOptions
{public string MySetting { get; set; }
}var builder = WebApplication.CreateBuilder(args);// 配置强类型选项
builder.Services.Configure<MyOptions>(builder.Configuration.GetSection("MyOptions"));var app = builder.Build();var options = app.Services.GetRequiredService<Microsoft.Extensions.Options.IOptions<MyOptions>>().Value;
System.Console.WriteLine($"MySetting value: {options.MySetting}");app.Run();
appsettings.json
{"MyOptions": {"MySetting": "Hello, Options!"}
}
12. 环境变量配置
- 技术知识:可通过环境变量为 .NET Core 应用提供配置,这在不同环境(开发、测试、生产)部署时很有用,能灵活调整应用配置。
Program.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;var builder = WebApplication.CreateBuilder(args);// 从环境变量加载配置
builder.Configuration.AddEnvironmentVariables();var app = builder.Build();var config = app.Services.GetRequiredService<IConfiguration>();
var myEnvSetting = config["MyEnvSetting"];
if (!string.IsNullOrEmpty(myEnvSetting))
{Console.WriteLine($"Value from environment variable: {myEnvSetting}");
}
else
{Console.WriteLine("Environment variable not set.");
}app.Run();
13. 自定义服务生命周期
- 技术知识:在 .NET Core 里,可自定义服务的生命周期,像创建单例服务、作用域服务和瞬态服务,以满足不同的业务需求。
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;// 定义服务接口
public interface IMyService
{void DoWork();
}// 定义服务实现
public class MyService : IMyService
{public void DoWork(){System.Console.WriteLine("Service is doing work.");}
}var builder = WebApplication.CreateBuilder(args);// 注册单例服务
builder.Services.AddSingleton<IMyService, MyService>();var app = builder.Build();var service = app.Services.GetRequiredService<IMyService>();
service.DoWork();app.Run();
14. 过滤器(Filter)
- 技术知识:过滤器能在请求处理管道的特定阶段执行代码,如授权过滤器、动作过滤器、异常过滤器等,可用于实现日志记录、权限验证等功能。
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;// 自定义动作过滤器
public class CustomActionFilterAttribute : ActionFilterAttribute
{public override void OnActionExecuting(ActionExecutingContext context){System.Console.WriteLine("Before action execution");base.OnActionExecuting(context);}public override void OnActionExecuted(ActionExecutedContext context){System.Console.WriteLine("After action execution");base.OnActionExecuted(context);}
}// 定义控制器
[ApiController]
[Route("[controller]")]
public class MyController : ControllerBase
{[HttpGet][CustomActionFilter]public IActionResult Get(){return Ok("Hello, World!");}
}var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();var app = builder.Build();app.UseRouting();
app.MapControllers();app.Run();
15. 中间件顺序
- 技术知识:中间件的执行顺序对请求处理流程有重要影响,合理安排中间件顺序能确保应用按预期工作。
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;// 自定义动作过滤器
public class CustomActionFilterAttribute : ActionFilterAttribute
{public override void OnActionExecuting(ActionExecutingContext context){System.Console.WriteLine("Before action execution");base.OnActionExecuting(context);}public override void OnActionExecuted(ActionExecutedContext context){System.Console.WriteLine("After action execution");base.OnActionExecuted(context);}
}// 定义控制器
[ApiController]
[Route("[controller]")]
public class MyController : ControllerBase
{[HttpGet][CustomActionFilter]public IActionResult Get(){return Ok("Hello, World!");}
}var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();var app = builder.Build();app.UseRouting();
app.MapControllers();app.Run();
16. 端点路由
- 技术知识:端点路由是 .NET Core 3.0 引入的新路由系统,提供更灵活、高效的路由配置方式,支持属性路由、约定路由等。
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Hosting;var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();app.UseRouting();app.UseEndpoints(endpoints =>
{endpoints.MapGet("/", async context =>{await context.Response.WriteAsync("Hello from root!");});endpoints.MapGet("/about", async context =>{await context.Response.WriteAsync("This is the about page.");});
});app.Run();
17. 应用启动配置
- 技术知识:可在应用启动时进行各种配置,如设置日志级别、添加服务、配置中间件等,确保应用按需求启动。
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;var builder = WebApplication.CreateBuilder(args);// 配置日志
builder.Logging.ClearProviders();
builder.Logging.AddConsole();// 添加服务
builder.Services.AddControllers();var app = builder.Build();if (app.Environment.IsDevelopment())
{app.UseDeveloperExceptionPage();
}app.UseRouting();
app.MapControllers();app.Run();
18. 依赖注入作用域
- 技术知识:依赖注入作用域定义了服务实例的生命周期范围,如单例服务在整个应用生命周期内只有一个实例,作用域服务在每个请求周期内只有一个实例。
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;// 定义服务接口
public interface IMyScopedService
{void DoWork();
}// 定义服务实现
public class MyScopedService : IMyScopedService
{public void DoWork(){System.Console.WriteLine("Scoped service is doing work.");}
}var builder = WebApplication.CreateBuilder(args);// 注册作用域服务
builder.Services.AddScoped<IMyScopedService, MyScopedService>();var app = builder.Build();using (var scope = app.Services.CreateScope())
{var scopedService = scope.ServiceProvider.GetRequiredService<IMyScopedService>();scopedService.DoWork();
}app.Run();
19. 配置强类型选项
-
技术知识:可将配置文件中的配置项映射到强类型类,便于在代码中使用,提高代码的可读性和可维护性。
Program.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;// 定义配置类
public class MyOptions
{public string MySetting { get; set; }
}var builder = WebApplication.CreateBuilder(args);// 配置强类型选项
builder.Services.Configure<MyOptions>(builder.Configuration.GetSection("MyOptions"));var app = builder.Build();var options = app.Services.GetRequiredService<Microsoft.Extensions.Options.IOptions<MyOptions>>().Value;
System.Console.WriteLine($"MySetting value: {options.MySetting}");app.Run();
appsettings.json
{"MyOptions": {"MySetting": "Hello, Options!"}
}
20. 应用程序生命周期事件
-
技术知识:.NET Core 应用有多个生命周期事件,如启动、停止等,可通过订阅这些事件执行特定代码,如资源清理、日志记录等。
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using System;var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();var lifetime = app.Services.GetRequiredService<IHostApplicationLifetime>();lifetime.ApplicationStarted.Register(() =>
{Console.WriteLine("Application has started.");
});lifetime.ApplicationStopping.Register(() =>
{Console.WriteLine("Application is stopping.");
});lifetime.ApplicationStopped.Register(() =>
{Console.WriteLine("Application has stopped.");
});app.Run();