分类
ASP.NET Core

工作总结生系统项目总结

权限管理尽量使用框架内置的,基于角色的。没必要自定义能灵活配置的角色和权限,自找麻烦。框架自带的设计是相当合理且普适的,使客户能更明确自己的需求,方便了沟通,简化了开发。虽说客户不能自定义配置了,每次变更都要找我们修改,但是好处是带来了客户对我们的依赖性。

数据库尽量使用性能好且稳定的,mysql 虽说不错,但用的时间长了数据量大了,担心性能拉垮。

ORM 可以使用 EF,但是不要把迁移用到生产环境,可以生成迁移脚本到线上去执行,提供升级和回滚脚本。也可以考虑 dapper 和国产 ORM。

交付前做性能测试和压力测试。多生成点数据用于测试,一是测试性能,二是测试数据量大的时候,界面是否能正常显示。

实践出真知,不要相信网上那些花里胡哨的不知基于什么动机发布的文章。

分类
ASP.NET Core

HTTP Error 500.38 – Failed to locate ASP.NET Core app

IIS 部署 ASP.NET Core 报错:HTTP Error 500.38 – Failed to locate ASP.NET Core app。

错误原因查询:https://learn.microsoft.com/zh-cn/aspnet/core/test/troubleshoot-azure-iis?view=aspnetcore-7.0

解决办法:在IIS部署时,禁用单文件发布

<PublishSingleFile>false</PublishSingleFile>
在项目文件中禁用单文件发布

如果使用VS的发布,要在发布选项中去掉“生成单个文件”发布选项的钩:

VS发布配置,去掉“生成单个文件”
分类
ASP.NET Core

asp.net core 读取系统环境变量

系统中配置的环境变量

代码如下:

var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", EnvironmentVariableTarget.Machine);

关键在于第二个参数:EnvironmentVariableTarget.Machine

分类
ASP.NET Core

.NET 7 身份验证和授权的变化

.NET 7 于今天发布了,在 ASP.NET Core 的身份验证和授权的配置上做了一些简化,变化如下:

配置登录验证的方式,从 .NET 6 的:

builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme);

变成了 .NET 7 的:

builder.Services.AddAuthentication().AddCookie();

ASP.NET Core 会自动对认证方案进行推断,从而省略了参数的配置。

对于登录验证和授权的中间件,.NET 7 中不再需要手动引入,框架会自动推断是否使用,因此,app.UseAuthentication()app.UseAuthorization()也就不再需要了。

从而,运行一个完整的 ASP.NET Core MVC 程序所需要的最简配置是这样的:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
builder.Services.AddAuthentication().AddCookie(); //👈 new feature
var app = builder.Build();
app.UseStaticFiles();
app.MapDefaultControllerRoute();
app.Run();

参考链接:https://auth0.com/blog/whats-new-in-dotnet-7-for-authentication-and-authorization/