简介(图片推荐浏览器150%查看)
场景发生在,我们本地使用NCF开发了一个应用,前提是应用使用了Redis,如果没有使用Redis,则不会遇到以下的问题,当要迁移到线上或者是迁移到别的地方的时候
这样的情况会出现2个问题:
1.直接报错,如下图所示
2.没有报错,正常连接了,但是线上环境读取的却是本地测试环境的数据(这个问题不好排查,一定要注意,要建立一个有标识性的数据才能排查到现在是连接的哪个数据库)
步骤
1.检查Senparc.Web/App_Data/Database/SenparcConfig.config的使用的对应数据库配置是否正确,用工具检查连接是否正常
2.检查Senparc.Web/appsetting.json中使用的节点 SenparcSetting 下的 Cache_Redis_Configuration 配置是否正确,用工具检查连接是否正常
3.如步骤1,2都没有问题,则要检查Redis中 Senparc:NcfDefaultCache:__SENPARC_DATABASE_CONNECTION_CONFIG_KEY 这个节点配置的数据库连接是否正确
4.都检查完以后,删掉无效的连接,重新运行应用
案例
1.本地的数据库设置
<SenparcConfig> <Id>3</Id> <Name>Local-SqlServer</Name> <!--本地Demo默认数据库(可在appsettings.json中修改DatabaseName配置)--> <ConnectionStringFull><![CDATA[Server=localhost;Database=test; User ID=test; Password=123456;Application Name=zmz]]></ConnectionStringFull> <ApplicationPath><![CDATA[/]]></ApplicationPath> </SenparcConfig>
2.本地的Redis设置
//CO2NET 设置 "SenparcSetting": { //以下为 CO2NET 的 SenparcSetting 全局配置,请勿修改 key,勿删除任何项 "IsDebug": true, "DefaultCacheNamespace": "NcfDefaultCache", //分布式缓存 //"Cache_Redis_Configuration": "#{Cache_Redis_Configuration}#", //Redis配置 //"Cache_Redis_Configuration": "localhost:6379",//不包含密码 "Cache_Redis_Configuration": "localhost:6379,password=123456,connectTimeout=1000,connectRetry=2,syncTimeout=10000,defaultDatabase=4",//密码及其他配置 "Cache_Memcached_Configuration": "#{Cache_Memcached_Configuration}#", //Memcached配置 "SenparcUnionAgentKey": "#{SenparcUnionAgentKey}#" //SenparcUnionAgentKey }
3. 设置完以后,运行应用的时候就会生成Redis的项
{ "Local-SqlServer": { "Id": 3, "Name": "Local-SqlServer", "ConnectionStringFull": "Server=220.218.0.223;Database=test; User ID=test; Password=123456;Application Name=zmz",(检查这里) "ApplicationPath": "/" }, "Local-SQLite": { "Id": 2, "Name": "Local-SQLite", "ConnectionStringFull": "Filename=:memory:", "ApplicationPath": "/" }, "Local-MySql": { "Id": 4, "Name": "Local-MySql", "ConnectionStringFull": "Server=localhost;Database=NCF;Uid=root;Pwd=RootPwd4@NeuCharFramework;", "ApplicationPath": "/" }, "Client-SqlServer": { "Id": 1, "Name": "Client-SqlServer", "ConnectionStringFull": "Server=192.168.8.254,14480;Database=SCF_XFY; User ID=sa; Password=@WSXzaq1;Application Name=fxu", "ApplicationPath": "/" } }
4.检查3中Redis中缓存的数据库连接是否是正确的,如果不正确,删掉这些节点,重新运行你的应用即可
以上情况为我遇到的,欢迎大家多多交流