Senparc.CO2NET
本地锁
锁存放容器
随机数
读取LockPool时的锁
全局静态数据源帮助类
所有数据集合的列表
本地容器缓存策略
LocalCacheStrategy的构造函数
返回指定缓存键的对象,并强制指定类型
缓存键
是否已经是完整的Key,如果不是,则会调用一次GetFinalKey()方法
领域内不同类型缓存 -> 底层(CO2NET 级别) 的映射关系
扩展缓存策略(例如RedisContainerCacheStrategy)
扩展缓存策略所使用的底层缓存策略(如RedisCacheStrategy)
构造函数
扩展缓存策略(例如RedisContainerCacheStrategy)
某一个领域内的缓存策略集合
添加或更新缓存策略映射
领域缓存仓库
获取某个领域内的所有CacheStrategyDomainMappingCollection
注册领域缓存
获取领域缓存(指定特定 的IBaseObjectCacheStrategy 缓存策略对象)
IBaseObjectCacheStrategy 缓存策略对象
缓存领域
清空所有已经祖册的领域缓存对象
自动注册领域缓存
是否自动扫描全局的扩展缓存(会增加系统启动时间)
需要手动注册的扩展缓存策略
(LocalContainerCacheStrategy、RedisContainerCacheStrategy、MemcacheContainerCacheStrategy已经自动注册),
如果设置为 null(注意:不适委托返回 null,是整个委托参数为 null),则自动使用反射扫描所有可能存在的扩展缓存策略
返回所有添加的类型
扩展领域缓存策略
注意:实现此接口的类必须使用单例模式!
唯一名称(建议使用GUID)
预的名称
领域扩展(非 CO2NET 级别的缓存策略)接口,例如作为 LocalContainerCacheStrategy 的接口
注意:实现此接口的类必须使用单例模式!
领域缓存定义
使用的基础缓存策略
向底层缓存注册当前缓存策略
扩展缓存策略实例
缓存策略工厂。
缓存策略的注册(立即启用)和当前缓存策略获取
注册当前全局环境下的缓存策略,并立即启用。
如果为 null,将使用默认的本地缓存策略(LocalObjectCacheStrategy.Instance)
获取全局缓存策略
获取指定领域缓存的换存策略
领域缓存信息(需要为单例)CacheStrategyDomain
泛型缓存策略基类
获取拼装后的FinalKey
键
是否已经是经过拼接的FullKey
获取一个同步锁
最底层的缓存策略接口
创建一个(分布)锁
资源名称
Key标识
重试次数
重试延时
公共缓存策略接口
获取缓存中最终的键,如Container建议格式: return String.Format("{0}:{1}", "SenparcWeixinContainer", key);
是否已经是完整的Key,如果不是,则会调用一次GetFinalKey()方法
添加指定ID的对象
缓存键
缓存值
过期时间
添加指定ID的对象
缓存键
缓存值
是否已经是完整的Key,如果不是,则会调用一次GetFinalKey()方法
过期时间
移除指定缓存键的对象
缓存键
是否已经是完整的Key,如果不是,则会调用一次GetFinalKey()方法
返回指定缓存键的对象
缓存键
是否已经是完整的Key,如果不是,则会调用一次GetFinalKey()方法
返回指定缓存键的对象,并强制指定类型
缓存键
是否已经是完整的Key,如果不是,则会调用一次GetFinalKey()方法
获取所有缓存信息集合
检查是否存在Key及对象
缓存键
是否已经是完整的Key,如果不是,则会调用一次GetFinalKey()方法
获取缓存集合总数(注意:每个缓存框架的计数对象不一定一致!)
更新缓存
缓存键
缓存值
是否已经是完整的Key,如果不是,则会调用一次GetFinalKey()方法
过期时间
缓存同步锁基类
立即开始锁定,需要在子类的构造函数中执行
获取最长锁定时间(锁最长生命周期)
重试次数,
最小锁定时间周期
单位:Milliseconds,毫秒
缓存锁接口
是否成功获得锁
开始锁
资源名称,即锁的标识,实际值为IBaseCacheStrategy接口中的 BeginCacheLock() 方法中的 [resourceName.key]
开始锁,并设置重试条件
资源名称,即锁的标识,实际值为IBaseCacheStrategy接口中的 BeginCacheLock() 方法中的 [resourceName.key]
重试次数
每次重试延时
释放锁
需要释放锁的 Key,即锁的标识,实际值为IBaseCacheStrategy接口中的 BeginCacheLock() 方法中的 [resourceName.key]资源名称,和 Lock() 方法中的 resourceName 对应
获取最长锁定时间(锁最长生命周期)
重试次数,
最小锁定时间周期
单位:Milliseconds,毫秒
用于提供给缓存储存的封装对象,包含了对象类型(Type)信息
缓存序列化扩展方法,所有(分布式)缓存的序列化、反序列化过程必须使用这里的方法统一读写
序列化到缓存可用的对象
从缓存对象反序列化到实例
从缓存对象反序列化到实例(效率更高,推荐)
所有以 string 类型为 key ,object 为 value 的缓存策略接口
Senparc.CO2NET 全局设置
全局配置
在 startup.cs 中运行 RegisterServiceExtension.AddSenparcGlobalServices() 即可自动注入
指定是否是Debug状态,如果是,系统会自动输出日志
请求超时设置(以毫秒为单位),默认为10秒。
说明:此处常量专为提供给方法的参数的默认值,不是方法内所有请求的默认超时时间。
JavaScriptSerializer 类接受的 JSON 字符串的最大长度
默认缓存键的第一级命名空间,默认值:DefaultCache
网站根目录绝对路径
缓存类型
本地运行时缓存(单机)
Redis缓存(支持分布式)
Memcached(支持分布式)
用户信息中的性别(sex)
异常基类
BaseException 构造函数
BaseException
异常消息
内部异常信息
是否已经使用WeixinTrace记录日志,如果没有,BaseException会进行概要记录
缓存异常
缓存异常构造函数
领域缓存未注册异常
UnregisteredDomainCacheStrategyException 构造函数
解决 XXE 漏洞,自动将 XmlResolver 设为 null
构造函数
扩展方法
把数据转换为Json格式(使用Newtonsoft.Json.dll)
数据
是否使用缩进格式
string.IsNullOrWhiteSpace()的扩展方法
string.IsNullOrEmpty()的扩展方法
string.Format()的扩展方法
用于网页的HTML、Url编码/解码
封装System.Web.HttpUtility.HtmlEncode
封装System.Web.HttpUtility.HtmlDecode
封装 System.Web.HttpUtility.UrlEncode
注意:.NET Core 转义后字母为大写
编码,默认为 UTF8
封装System.Web.HttpUtility.UrlDecode
编码,默认为 UTF8
微信日期处理帮助类
Unix起始时间
转换微信DateTime时间到C#时间
微信DateTime
转换微信DateTime时间到C#时间
微信DateTime
转换微信DateTimeOffset时间到C#时间
微信DateTime
转换微信DateTimeOffset时间到C#时间
微信DateTime
获取微信DateTime(UNIX时间戳)
时间
获取Unix时间戳
获取Unix时间戳
实体帮助类
Extension method that turns a dictionary of string and object to an ExpandoObject
Snagged from http://theburningmonk.com/2011/05/idictionarystring-object-to-expandoobject-extension-method/
文件帮助类
根据完整文件路径获取FileStream
从Url下载文件
GPS 帮助类
计算两点GPS坐标的距离(单位:米)
第一点的纬度坐标
第一点的经度坐标
第二点的纬度坐标
第二点的经度坐标
给定的经度1,纬度1;经度2,纬度2. 计算2个经纬度之间的距离。
经度1
纬度1
经度2
纬度2
距离(公里、千米)
将角度换算为弧度。
角度
弧度
获取维度差
千米
获取经度差
千米
百度地图静态图片API,文档:http://api.map.baidu.com/lbsapi/cloud/staticimg.htm
获取百度地图静态图片
中心点经度
中心点维度
返回图片大小会根据此标志调整。取值范围为1或2:
1表示返回的图片大小为size= width * height;
2表示返回图片为(width*2)*(height *2),且zoom加1
注:如果zoom为最大级别,则返回图片为(width*2)*(height*2),zoom不变。
地图级别。高清图范围[3, 18];低清图范围[3,19]
标记列表,如果为null则不输出标记
图片宽度。取值范围:(0, 1024]。
图片高度。取值范围:(0, 1024]。
标记大小
百度地图标记
(可选)有大中小三个值,分别为s、m、l。
(可选)Color = [0x000000, 0xffffff]或使用css定义的颜色表。
black 0x000000
silver 0xC0C0C0
gray 0x808080
white 0xFFFFFF
maroon 0x800000
red 0xFF0000
purple 0x800080
fuchsia 0xFF00FF
green 0x008000
lime 0x00FF00
olive 0x808000
yellow 0xFFFF00
navy 0x000080
blue 0x0000FF
teal 0x008080
aqua 0x00FFFF
(可选)指定集合 {A-Z, 0-9} 中的一个大写字母数字字符。不指定时显示A。
自定义icon的地址,图片格式目前仅支持png32的。设置自定义图标标注时,忽略Size、Color、Label三个属性,只设置该属性且该属性前增加-1,如markerStyles=-1, http://api.map.baidu.com/images/marker_red.png,图标大小需小于5k,超过该值会导致加载不上图标的情况发生。
经度longitude(对应GoogleMap的X)
纬度latitude(对应GoogleMap的Y)
谷歌地图帮助类
获取谷歌静态地图Url。API介绍:https://developers.google.com/maps/documentation/staticmaps/?hl=zh-CN
标记大小
谷歌地图标记
(可选)指定集合 {tiny, mid, small} 中的标记大小。如果未设置 size 参数,标记将以其默认(常规)大小显示。
(可选)指定 24 位颜色(例如 color=0xFFFFCC)或集合 {black, brown, green, purple, yellow, blue, gray, orange, red, white} 中预定义的一种颜色。
(可选)指定集合 {A-Z, 0-9} 中的一个大写字母数字字符。
经度longitude
纬度latitude
反射帮助类
创建对象实例
命名空间.类型名
程序集
创建对象实例
要创建对象的类型
类型所在程序集名称
类型所在命名空间
类型名
获取静态类属性
类型所在程序集名称
类型所在命名空间
类型名
属性名称(忽略大小写)
获取静态类属性
类型
属性名称(忽略大小写)
Allows JSON serialization of Expando objects into expected results (e.g., "x: 1, y: 2") instead of the default dictionary serialization.
JSON输出设置
是否忽略当前类型以及具有IJsonIgnoreNull接口,且为Null值的属性。如果为true,符合此条件的属性将不会出现在Json字符串中
需要特殊忽略null值的属性名称
指定类型(Class,非Interface)下的为null属性不生成到Json中
例外属性,即不排除的属性值
枚举类型显示字符串
JSON 输出设置 构造函数
是否忽略当前类型以及具有IJsonIgnoreNull接口,且为Null值的属性。如果为true,符合此条件的属性将不会出现在Json字符串中
需要特殊忽略null值的属性名称
指定类型(Class,非Interface)下的为null属性不生成到Json中
是否忽略当前类型以及具有IJsonIgnoreNull接口,且为Null值的属性。如果为true,符合此条件的属性将不会出现在Json字符串中
需要特殊忽略null值的属性名称
指定类型(Class,非Interface)下的为null属性不生成到Json中
JSON 输出设置 构造函数 优先级: ignoreNulls < propertiesToIgnoreNull < typesToIgnoreNull
是否忽略当前类型以及具有IJsonIgnoreNull接口,且为Null值的属性。如果为true,符合此条件的属性将不会出现在Json字符串中
需要特殊忽略null值的属性名称
指定类型(Class,非Interface)下的为null属性不生成到Json中
序列化帮助类
将对象转为JSON字符串(进行Json输出配置)
需要生成JSON字符串的数据
JSON输出设置
反序列化到对象
反序列化对象类型
JSON字符串
反序列化到对象
JSON字符串
反序列化类型
将字符串转为Unicode
unicode解码
unicode编码字符串
ASCII字典排序
创建新的ASCIISort实例
安全帮助类,提供SHA-1算法等
采用SHA-1算法加密字符串(小写)
需要加密的字符串
HMAC SHA256 加密
加密消息原文。当为小程序SessionKey签名提供服务时,其中message为本次POST请求的数据包(通常为JSON)。特别地,对于GET请求,message等于长度为0的字符串。
秘钥(如小程序的SessionKey)
获取大写的MD5签名结果
需要加密的字符串
编码
获取大写的MD5签名结果
需要加密的字符串
编码
获取小写的MD5签名结果
需要加密的字符串
编码
AES加密(默认为CBC模式)
输入的数据
向量
加密密钥
AES解密(默认为CBC模式)
输入的数据
向量
key
AES 加密(无向量,CEB模式,秘钥长度=128)
明文(待加密)
密文
AES 解密(无向量,CEB模式,秘钥长度=128)
被加密的明文(注意:为Base64编码)
密钥
明文
多种缓存测试帮助类
测试多种缓存
遍历使用多种缓存测试同一个过程(委托),确保不同的缓存策略行为一致
消息队列
队列数据集合
同步执行锁
立即同步所有缓存执行锁(给OperateQueue()使用)
生成Key
队列应用名称,如“ContainerBag”
操作对象类型
对象唯一标识Key
操作名称,如“UpdateContainerBag”
操作队列
获取当前等待执行的Key
获取SenparcMessageQueueItem
添加队列成员
移除队列成员
获得当前队列数量
SenparcMessageQueue消息队列项
队列项唯一标识
队列项目命中触发时执行的委托
此实例对象的创建时间
项目说明(主要用于调试)
初始化SenparcMessageQueue消息队列项
Senparc.CO2NET 基础信息注册
修改默认缓存命名空间
RegisterService
自定义命名空间名称
注册 Threads 的方法(如果不注册此线程,则AccessToken、JsTicket等都无法使用SDK自动储存和管理)
RegisterService
注册 TraceLog 的方法
RegisterService
开始 Senparc.CO2NET 初始化参数流程
是否自动扫描全局的扩展缓存(会增加系统启动时间)
需要手动注册的扩展缓存策略
(LocalContainerCacheStrategy、RedisContainerCacheStrategy、MemcacheContainerCacheStrategy已经自动注册),
如果设置为 null(注意:不适委托返回 null,是整个委托参数为 null),则自动使用反射扫描所有可能存在的扩展缓存策略
快捷注册接口
快捷注册类,IRegisterService的默认实现
开始 Senparc.CO2NET SDK 初始化参数流程
快捷注册类,RegisterService 扩展类
CO2NET 全局设置
是否出于Debug状态
默认缓存键的第一级命名空间,默认值:DefaultCache
Senparc 统一代理标识
Redis连接字符串
Memcached连接字符串
SenparcSetting 构造函数
SenparcSetting 构造函数
从 Web.Config 文件自动生成 SenparcSetting
设置 CO2NET 全局的 Debug 状态
SenparcMessageQueue线程自动处理
析构函数,将未处理的队列处理掉
启动线程轮询
线程处理类
异步线程容器
注册线程
Senparc.CO2NET 日志记录
统一日志锁名称
记录BaseException日志时需要执行的任务
执行所有日志记录操作时执行的任务(发生在记录日志之后)
是否开放每次 APM 录入的记录,默认为关闭(当 Senparc.CO2ENT.APM 启用时有效)
Senparc.Weixin全局统一的缓存策略
队列执行逻辑
结束日志记录
系统日志
日志内容
自定义日志
日志类型
日志内容
API请求日志(接收结果)
API请求日志(Post发送消息)
BaseException 日志
BaseException 日志
每一次跟踪日志的对象信息
获取完整单条日志的字符串信息
浏览器公共类
获取 Headers 中的 User-Agent 字符串
实体工具类
将对象转换到指定类型
向属性填充值
向属性填充值(强制使用指定的类型)
服务器工具类
dll 项目根目录
获取相对于网站根目录的文件路径
获取相对于dll目录的文件绝对路径
虚拟路径,如~/App_Data/
流工具类
获取Stream的Base64字符串
将base64String反序列化到流,或保存成文件
如果为null则不保存
将memoryStream保存到文件
【异步方法】获取Stream的Base64字符串
【异步方法】将base64String反序列化到流,或保存成文件
如果为null则不保存
【异步方法】将memoryStream保存到文件
XML 工具类
反序列化
XML字符串
反序列化
序列化
说明:此方法序列化复杂类,如果没有声明XmlInclude等特性,可能会引发“使用 XmlInclude 或 SoapInclude 特性静态指定非已知的类型。”的错误。
对象
序列化将流转成XML字符串
缓存立即生效方法
是否立即个更新到缓存
是否立即更新到缓存
释放,开始立即更新所有缓存
创建一个FlushCache实例
是否立即更新到缓存
Get 请求处理
获取随机文件名
GET方式请求URL,并返回T类型
接收JSON的数据类型
返回JSON本文,并在进行序列化之前触发,参数分别为:url、returnText
从Url下载
从Url下载,并保存到指定目录
需要下载文件的Url
保存文件的路径,如果下载文件包含文件名,按照文件名储存,否则将分配Ticks随机文件名
超时时间
【异步方法】异步GetJson
返回JSON本文,并在进行序列化之前触发,参数分别为:url、returnText
【异步方法】异步从Url下载
【异步方法】从Url下载,并保存到指定目录
需要下载文件的Url
保存文件的路径,如果下载文件包含文件名,按照文件名储存,否则将分配Ticks随机文件名
超时时间
Post 请求处理
发起Post请求,可上传文件
返回数据类型(Json对应的实体)
请求Url
CookieContainer,如果不需要则设为null
证书,如果不需要则保留null
代理请求超时时间(毫秒)
需要Post的文件(Dictionary 的 Key=name,Value=绝对路径)
需要Post的键值对(name,value)
返回JSON本文,并在进行序列化之前触发,参数分别为:url、returnText
发起Post请求,可包含文件流
返回数据类型(Json对应的实体)
请求Url
CookieContainer,如果不需要则设为null
文件流
证书,如果不需要则保留null
是否使用Ajax请求
代理请求超时时间(毫秒)
验证服务器证书回调自动验证
返回JSON本文,并在进行序列化之前触发,参数分别为:url、returnText
Form表单Post数据,获取JSON
CookieContainer,如果不需要则设为null
表单数据,Key对应name,Value对应value
证书,如果不需要则保留null
是否使用Ajax请求
代理请求超时时间(毫秒)
返回JSON本文,并在进行序列化之前触发,参数分别为:url、returnText
使用Post方法上传数据并下载文件或结果
【异步方法】发起Post请求,可上传文件
返回数据类型(Json对应的实体)
请求Url
CookieContainer,如果不需要则设为null
证书,如果不需要则保留null
代理请求超时时间(毫秒)
需要Post的文件(Dictionary 的 Key=name,Value=绝对路径)
需要Post的键值对(name,value)
返回JSON本文,并在进行序列化之前触发,参数分别为:url、returnText
【异步方法】发起Post请求,可包含文件流
返回数据类型(Json对应的实体)
请求Url
CookieContainer,如果不需要则设为null
文件流
证书,如果不需要则保留null
是否使用Ajax请求
代理请求超时时间(毫秒)
验证服务器证书回调自动验证
返回JSON本文,并在进行序列化之前触发,参数分别为:url、returnText
【异步方法】Form表单Post数据,获取JSON
CookieContainer,如果不需要则设为null
表单数据,Key对应name,Value对应value
证书,如果不需要则保留null
是否使用Ajax请求
代理请求超时时间(毫秒)
返回JSON本文,并在进行序列化之前触发,参数分别为:url、returnText
【异步方法】使用Post方法上传数据并下载文件或结果
HTTP 请求工具类
HTTP 请求工具类
HTTP 请求工具类
设置Web代理
清除Web代理状态
验证服务器证书
设置HTTP头
是否使用Ajax
header附加信息
填充表单信息的Stream
填充表单信息的Stream
组装QueryString的方法
参数之间用&连接,首位没有符号,如:a=1&b=2&c=3
.NET 4.5 版本的HttpWebRequest参数设置
使用Get方法获取字符串结果(没有加入Cookie)
使用Get方法获取字符串结果(加入Cookie)
证书,如果不需要则保留null
referer参数
是否使用Ajax
获取HttpWebResponse或HttpResponseMessage对象,本方法通常用于测试)
使用Get方法获取字符串结果(没有加入Cookie)
使用Get方法获取字符串结果(加入Cookie)
证书,如果不需要则保留null
referer参数
获取 Content
提交表单字段
给.NET Framework使用的HttpPost请求公共设置方法
header附加信息
使用Post方法获取字符串结果,常规提交
使用Post方法获取字符串结果
需要上传的文件,Key:对应要上传的Name,Value:本地文件名
证书,如果不需要则保留null
header 附加信息
验证服务器证书回调自动验证
使用Post方法获取HttpWebResponse或HttpResponseMessage对象,本方法独立使用时通常用于测试)
需要上传的文件,Key:对应要上传的Name,Value:本地文件名
证书,如果不需要则保留null
header附加信息
验证服务器证书回调自动验证
使用Post方法获取字符串结果,常规提交
使用Post方法获取字符串结果
需要上传的文件,Key:对应要上传的Name,Value:本地文件名
header附加信息
验证服务器证书回调自动验证
使用Post方法获取HttpWebResponse或HttpResponseMessage对象,本方法独立使用时通常用于测试)
需要上传的文件,Key:对应要上传的Name,Value:本地文件名
证书,如果不需要则保留null
header附加信息
验证服务器证书回调自动验证
统一封装HttpResonse请求,提供Http请求过程中的调试、跟踪等扩展能力
.NET Core 使用的 WebProxy 类
参考:http://www.abelliu.com/dotnet/dotnet%20core/2017/03/14/dotnetcore-proxy/
WebProxy for .net core
时间扩展类
当前时间
当天零点时间,从 SystemTime.Now.Date 获得