NCF 数据库错位导致站点访问不了

简介(图片推荐浏览器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中缓存的数据库连接是否是正确的,如果不正确,删掉这些节点,重新运行你的应用即可

以上情况为我遇到的,欢迎大家多多交流

QQ:365845726 微信:zhao365845726 有兴趣可以加入QQ群: 群号:924439616(ML-Dotnet解决方案)
原文地址:https://www.cnblogs.com/zhao365845726/p/14360150.html