• 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解决方案)
  • 相关阅读:
    内置方法(item系列、__str__方法、__del__方法)
    POJ3436
    CF551B
    HDU1588
    HDU3117
    CF834D
    CF832D
    CF832C
    POJ1930
    POJ3666
  • 原文地址:https://www.cnblogs.com/zhao365845726/p/14360150.html
Copyright © 2020-2023  润新知