WebApi下做项目配置

简介: WebApi下做项目配置
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
namespace YFAPICommon.Libs
{
    public class MerchantConfig
    {
        public string Name { set; get; }
        public string MerchantID { set; get; }
        public string Pass { set; get; }
    }
    public class MerchantCache
    {
        private static Dictionary<string, MerchantConfig> merchantCache = null;
        private static string jsonfile = System.Web.Hosting.HostingEnvironment.MapPath(@"~/MerchantConfig.json");//JSON文件路径
        public static void initCache()
        {
            string jsonStr = System.IO.File.ReadAllText(jsonfile, Encoding.Default);
            merchantCache = JsonConvert.DeserializeObject<Dictionary<string,MerchantConfig>>(jsonStr);
        }
        public static MerchantConfig getMerchantConfig(string MerchantID)
        {
            if (merchantCache == null)
                initCache();
            MerchantConfig config = null;
            if (merchantCache.TryGetValue(MerchantID, out config))
                return config;
            else
                return null;
        }
        public static void clearCache()
        {
            merchantCache = null;
        }
        public static string addConfig(MerchantConfig input)
        {
            if (merchantCache == null)
                initCache();
            MerchantConfig config = null;
            if (merchantCache.TryGetValue(input.MerchantID, out config))
            {
                return "已存在不可添加";
            }
            else
            {
                merchantCache.Add(input.MerchantID,input);
                string jsonStr = JsonConvert.SerializeObject(merchantCache);
                System.IO.File.WriteAllText(jsonfile, jsonStr, Encoding.Default);
                return "添加成功";
            }
        }
        public static object getAllConfig()
        {
            if (merchantCache == null)
                initCache();
            return merchantCache;
        }
    }
}
{
    "333333": {
        "Name": "测试商户2", 
        "MerchantID": "333333", 
        "Pass": "xxxxxxxxxxxxxxx"
    }, 
    "1234567": {
        "Name": "测试商户", 
        "MerchantID": "1234567", 
        "Pass": "xxxxxxxxxxxxxxx"
    }
}
相关文章
|
算法 C++ 索引
GNURadio+USRP+OFDM实现文件传输(一)
GNURadio+USRP+OFDM实现文件传输(一)
2120 1
|
弹性计算 Windows
同步服务器时间NTP
在秒杀、抢券等高并发的活动中,一点点的时间延迟,也会让自己后悔莫及……
2038 0
同步服务器时间NTP
|
缓存 JavaScript 前端开发
VUE自动检测版本更新
本文简单介绍了实现线上更新的一种思路,相比在生产环境下实现热更新,或者是使用websocket相对来说都是比较麻烦的,而且还需要改动服务器,这种做法只需要一小段js函数即可解决,并且效率也是非常高的,对整个系统的运行,基本上是没有任何负面影响,因为单页面模式下,每次请求的页面实际上传输的数据非常少,所以两秒一次,完全不会给站点增加负荷。
377 0
|
人工智能 开发工具 git
一看就会的智能换颜项目教程!5分钟速通明星大模型开源项目一键部署
有了通义灵码的帮助,很多明星大模型项目实操过程中遇到的问题:查找错误、解释代码、优化代码、查找文档、代码补全等等都可以用通义灵码一键解决,而且准确率很高,加上灵活的实操环境,项目跑起来会非常高效。关键是通义灵码个人版还免费!
|
存储 Java 调度
Android面试题之Kotlin协程到底是什么?它是线程吗?
本文探讨了协程与线程的区别,指出协程并非线程,而是轻量级的线程替代。协程轻量体现在它们共享调用栈,内存占用少,仅需几个KB。协程切换发生在用户态,避免了昂贵的内核态切换。在Kotlin中,协程通过Continuation对象实现上下文保存,允许高效并发执行,而不会像线程那样消耗大量资源。通过`runBlocking`和`launch`示例展示了协程的非阻塞挂起特性。总结来说,协程的轻量主要源于内存占用少、切换开销低和高并发能力。
379 0
|
负载均衡 监控 API
实时计算 Flink版产品使用合集之Akka RPC 压力过大,除了增大心跳超时,是否有其他解决方法
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
Oracle NoSQL 关系型数据库
实时计算 Flink版操作报错合集之报错ClassCastException异常如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
458 0
|
机器学习/深度学习 监控 算法
OpenAI Gym 高级教程——深度强化学习库的高级用法
OpenAI Gym 高级教程——深度强化学习库的高级用法
1101 0
|
监控 BI Sentinel
深入理解Sentinel系列-2.Sentinel原理及核心源码分析(下)
深入理解Sentinel系列-2.Sentinel原理及核心源码分析
261 0
|
安全 数据安全/隐私保护 虚拟化
不使用VMTools,宿主机与虚拟机交换文件的方法(接上章)(上)
VMTool虽然方便,但毕竟是专用于虚拟机的软件,将要封装的系统不安装VMTools,易导致一些琐碎问题。下面我给大家介绍一个最常用的宿主机与虚拟机交换文件的方法,当然,比VMTools繁琐,但绝不影响系统封装。
733 0
不使用VMTools,宿主机与虚拟机交换文件的方法(接上章)(上)