必要配置
数据库连接配置
支持多类型、多个数据库访问,同时支持一主多从数据库读写分离。数据库连接配置在appsettings.json
中DbConnections
中,必须至少配置一个主数据库MasterDB
。如下:
"DbConnections": [
{
"ConnId": "LocalDB",
"Enabled": true,true //是否可用
"MasterDB": { //主库
"ConnectionString": "server=localhost;Database=bonwcslocal1;Uid=root;Pwd=123456;Port=3306;CharSet=utf8mb4;Allow User Variables=True;SslMode=none;AllowLoadLocalInfile=true;",
"DatabaseType": 0, //数据库类型取值:mysql=0,SqlServer=1,Oracle=2,Access=3,SQLite=4,PostgreSQL=5,Npgsql=6,Dm=7,Kdbndp=8
"Enabled": true //是否可用
},
"ReadDB": [//只读库
{
"ConnectionString": "xxx", //数据库连接字符
"HitRate": 10, //从库执行访问权重,越大越先执行
"Enabled": true //是否可用
},
{
"ConnectionString": "xxxxx", //数据库连接字符
"HitRate": 20, //从库执行访问权重,越大越先执行
"Enabled": true //是否可用
}
]
}
]
其中:
1、MassterDB 为主数据库配置信息,在不开启读写分离的情况下,仅配置该参数即可。需要注意DatabaseType
指定数据库类型,目前支持的数据库类型值有 mysql=0,SqlServer=1,Oracle=2,Access=3,SQLite=4,PostgreSQL=5,Npgsql=6,Dm=7,Kdbndp=8。
2、ReadDB 为从数据库,需要支持读写分离是配置。
服务器缓存设置
系统采用 Redis 和 net 自带的 MemoryCache。
可以根据自己需要,扩展 Redis 等缓存。需要引用 Microsoft.Extensions.Caching.Redis 和 StackExchange.Redis 两个 Redis 包。
在 appsettings.json 添加配置
"CacheProvider": {
"UseRedis": true,
"Redis_ConnectionString": "127.0.0.1:6379,allowAdmin=true,password=123456,defaultdatabase=0",
"Redis_InstanceName": "yuebon_redis_"
}
我们写一个类,来获取配置几个配置,CacheProvider 说明:
1)、UseRedis:是否使用 Redis 缓存,不使用设置 false 即可;
2)、Redis_ConnectionString:Redis 连接,按示例参数进行配置,allowadmin、password、defaultdatabase 都需要,其他配置参数请查阅相关文档;
3)、Redis_InstanceName:Redis 实例名称
跨域设置
跨域访问在 appsettings.json 中设置 AllowOrigins 值,用英文逗号“,”隔开,不要以斜杆“/”结束
"AllowOrigins": "http://localhost,http://192.168.1.106,http://netvue.ts.yuebon.com",
前后端分离时前台调用后台系统时就是跨域访问,此处配置允许前台访问的请求地址。第三方网站调用本系统 webapi 也要配置,否则一样不能跨域访问。
Startup.cs 代码
目前源码中默认为测试环境配置,允许所有跨域访问,配置如下:
//允许所有跨域访问,测试用
services.AddCors(options => options.AddPolicy("yuebonCors",
policy => policy.WithOrigins("*").AllowAnyHeader().AllowAnyMethod()));
正式环境建议如下配置:
//全局设置跨域访问
services.AddCors(options => options.AddPolicy("yuebonCors",
policy => policy.WithOrigins(Configuration.GetSection("AppSetting:AllowOrigins").Value.Split(',', StringSplitOptions.RemoveEmptyEntries))
.AllowAnyHeader()
.AllowAnyMethod()));
- IIS 部署中部分会出现 method 为 delete 时跨域问题?
请在 web.config 做如下配置:
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
如遇到问题到Issues反馈