diff --git a/NewLife.Core/Caching/Redis.cs b/NewLife.Core/Caching/Redis.cs
index 44a50d4..26cb342 100644
--- a/NewLife.Core/Caching/Redis.cs
+++ b/NewLife.Core/Caching/Redis.cs
@@ -18,7 +18,7 @@ namespace NewLife.Caching
{
/// <summary>Redis客户端</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/redis
+ /// 文档 https://newlifex.com/core/redis
///
/// 强烈建议保持唯一的Redis对象供多次使用,Redis内部有连接池并且支持多线程并发访问。
/// 高级功能需要引用NewLife.Redis,然后实例化FullRedis类。
diff --git a/NewLife.Core/Collections/DictionaryCache.cs b/NewLife.Core/Collections/DictionaryCache.cs
index e74c98a..c407269 100644
--- a/NewLife.Core/Collections/DictionaryCache.cs
+++ b/NewLife.Core/Collections/DictionaryCache.cs
@@ -11,7 +11,7 @@ namespace NewLife.Collections
{
/// <summary>字典缓存。当指定键的缓存项不存在时,调用委托获取值,并写入缓存。</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/dictionary_cache
+ /// 文档 https://newlifex.com/core/dictionary_cache
/// 常用匿名函数或者Lambda表达式作为委托。
/// </remarks>
/// <typeparam name="TKey">键类型</typeparam>
diff --git a/NewLife.Core/Collections/IPool.cs b/NewLife.Core/Collections/IPool.cs
index 85923c9..aed751a 100644
--- a/NewLife.Core/Collections/IPool.cs
+++ b/NewLife.Core/Collections/IPool.cs
@@ -6,7 +6,7 @@ namespace NewLife.Collections
{
/// <summary>对象池接口</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/object_pool
+ /// 文档 https://newlifex.com/core/object_pool
/// </remarks>
/// <typeparam name="T"></typeparam>
public interface IPool<T>
@@ -28,7 +28,7 @@ namespace NewLife.Collections
/// <summary>对象池扩展</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/object_pool
+ /// 文档 https://newlifex.com/core/object_pool
/// </remarks>
public static class Pool
{
diff --git a/NewLife.Core/Collections/ObjectPool.cs b/NewLife.Core/Collections/ObjectPool.cs
index 5e8d201..0f02209 100644
--- a/NewLife.Core/Collections/ObjectPool.cs
+++ b/NewLife.Core/Collections/ObjectPool.cs
@@ -10,7 +10,7 @@ namespace NewLife.Collections
{
/// <summary>资源池。支持空闲释放,主要用于数据库连接池和网络连接池</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/object_pool
+ /// 文档 https://newlifex.com/core/object_pool
/// </remarks>
/// <typeparam name="T"></typeparam>
public class ObjectPool<T> : DisposeBase, IPool<T>
diff --git a/NewLife.Core/Collections/Pool.cs b/NewLife.Core/Collections/Pool.cs
index fa4be83..9c91f08 100644
--- a/NewLife.Core/Collections/Pool.cs
+++ b/NewLife.Core/Collections/Pool.cs
@@ -6,7 +6,7 @@ namespace NewLife.Collections
{
/// <summary>轻量级对象池。数组无锁实现,高性能</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/object_pool
+ /// 文档 https://newlifex.com/core/object_pool
/// 内部 1+N 的存储结果,保留最热的一个对象在外层,便于快速存取。
/// 数组具有极快的查找速度,结构体确保没有GC操作。
/// </remarks>
diff --git a/NewLife.Core/Common/DisposeBase.cs b/NewLife.Core/Common/DisposeBase.cs
index 1a4f082..b3354e6 100644
--- a/NewLife.Core/Common/DisposeBase.cs
+++ b/NewLife.Core/Common/DisposeBase.cs
@@ -22,7 +22,7 @@ namespace NewLife
/// <summary>具有销毁资源处理的抽象基类</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/disposebase
+ /// 文档 https://newlifex.com/core/disposebase
/// </remarks>
/// <example>
/// <code>
diff --git a/NewLife.Core/Common/MachineInfo.cs b/NewLife.Core/Common/MachineInfo.cs
index 4354235..24f62b6 100644
--- a/NewLife.Core/Common/MachineInfo.cs
+++ b/NewLife.Core/Common/MachineInfo.cs
@@ -16,7 +16,7 @@ namespace NewLife
{
/// <summary>机器信息</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/machine_info
+ /// 文档 https://newlifex.com/core/machine_info
///
/// 刷新信息成本较高,建议采用单例模式
/// </remarks>
diff --git a/NewLife.Core/Common/Utility.cs b/NewLife.Core/Common/Utility.cs
index 07d8b62..1da147d 100644
--- a/NewLife.Core/Common/Utility.cs
+++ b/NewLife.Core/Common/Utility.cs
@@ -8,7 +8,7 @@ namespace System
{
/// <summary>工具类</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/utility
+ /// 文档 https://newlifex.com/core/utility
///
/// 采用静态架构,允许外部重载工具类的各种实现<seealso cref="DefaultConvert"/>。
/// 所有类型转换均支持默认值,默认值为该default(T),在转换失败时返回默认值。
diff --git a/NewLife.Core/Data/DbRow.cs b/NewLife.Core/Data/DbRow.cs
index 57bfb83..aa61260 100644
--- a/NewLife.Core/Data/DbRow.cs
+++ b/NewLife.Core/Data/DbRow.cs
@@ -6,7 +6,7 @@ namespace NewLife.Data
{
/// <summary>数据行</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/dbtable
+ /// 文档 https://newlifex.com/core/dbtable
/// </remarks>
public struct DbRow : IExtend
{
diff --git a/NewLife.Core/Data/DbTable.cs b/NewLife.Core/Data/DbTable.cs
index 02cc800..b898022 100644
--- a/NewLife.Core/Data/DbTable.cs
+++ b/NewLife.Core/Data/DbTable.cs
@@ -17,7 +17,7 @@ namespace NewLife.Data
{
/// <summary>数据表</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/dbtable
+ /// 文档 https://newlifex.com/core/dbtable
/// </remarks>
public class DbTable : IEnumerable<DbRow>, ICloneable, IAccessor
{
diff --git a/NewLife.Core/Data/GeoHash.cs b/NewLife.Core/Data/GeoHash.cs
index 7579aa7..b3d7e5b 100644
--- a/NewLife.Core/Data/GeoHash.cs
+++ b/NewLife.Core/Data/GeoHash.cs
@@ -6,7 +6,7 @@ namespace NewLife.Data
{
/// <summary>经纬坐标的一维编码表示</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/geo_hash
+ /// 文档 https://newlifex.com/core/geo_hash
///
/// 一维编码表示一个矩形区域,前缀表示更大区域,例如北京wx4fbzdvs80包含在wx4fbzdvs里面。
/// 这个特性可以用于附近地点搜索。
diff --git a/NewLife.Core/Data/Packet.cs b/NewLife.Core/Data/Packet.cs
index ec28946..13ede36 100644
--- a/NewLife.Core/Data/Packet.cs
+++ b/NewLife.Core/Data/Packet.cs
@@ -9,7 +9,7 @@ namespace NewLife.Data
{
/// <summary>数据包。设计于.NET2.0时代,功能上类似于NETCore的Span/Memory</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/packet
+ /// 文档 https://newlifex.com/core/packet
/// Packet的设计目标就是网络库零拷贝,所以Slice切片是其最重要功能。
/// </remarks>
public class Packet
diff --git a/NewLife.Core/Data/PageParameter.cs b/NewLife.Core/Data/PageParameter.cs
index 67f4ebf..cd3e5f1 100644
--- a/NewLife.Core/Data/PageParameter.cs
+++ b/NewLife.Core/Data/PageParameter.cs
@@ -7,7 +7,7 @@ namespace NewLife.Data
{
/// <summary>分页参数信息。可携带统计和数据权限扩展查询等信息</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/page_parameter
+ /// 文档 https://newlifex.com/core/page_parameter
/// </remarks>
public class PageParameter
{
diff --git a/NewLife.Core/Data/Snowflake.cs b/NewLife.Core/Data/Snowflake.cs
index 5eeb41e..10c3069 100644
--- a/NewLife.Core/Data/Snowflake.cs
+++ b/NewLife.Core/Data/Snowflake.cs
@@ -9,7 +9,7 @@ namespace NewLife.Data
{
/// <summary>雪花算法。分布式Id,业务内必须确保单例</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/snow_flake
+ /// 文档 https://newlifex.com/core/snow_flake
///
/// 使用一个 64 bit 的 long 型的数字作为全局唯一 id。在分布式系统中的应用十分广泛,且ID 引入了时间戳,基本上保持自增。
/// 1bit保留 + 41bit时间戳 + 10bit机器 + 12bit序列号
diff --git a/NewLife.Core/Event/WeakAction.cs b/NewLife.Core/Event/WeakAction.cs
index e0de6ea..7cd86dc 100644
--- a/NewLife.Core/Event/WeakAction.cs
+++ b/NewLife.Core/Event/WeakAction.cs
@@ -10,7 +10,7 @@ namespace NewLife
/// 如果把事件委托到某个对象的方法上,同时就间接的引用了这个对象,导致其一直无法被回收,从而造成内存泄漏。
/// 弱引用Action,原理就是把委托拆分,然后弱引用对象部分,需要调用委托的时候,再把对象“拉”回来,如果被回收了,就没有必要再调用它的方法了。
///
- /// 文档 https://www.yuque.com/smartstone/nx/weak_action
+ /// 文档 https://newlifex.com/core/weak_action
/// </remarks>
/// <typeparam name="TArgs"></typeparam>
public class WeakAction<TArgs>
diff --git a/NewLife.Core/Extension/StringHelper.cs b/NewLife.Core/Extension/StringHelper.cs
index 1e5925c..00dce45 100644
--- a/NewLife.Core/Extension/StringHelper.cs
+++ b/NewLife.Core/Extension/StringHelper.cs
@@ -13,7 +13,7 @@ namespace NewLife
{
/// <summary>字符串助手类</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/string_helper
+ /// 文档 https://newlifex.com/core/string_helper
/// </remarks>
public static class StringHelper
{
diff --git a/NewLife.Core/IO/CsvDb.cs b/NewLife.Core/IO/CsvDb.cs
index 4bf72d3..a3df31e 100644
--- a/NewLife.Core/IO/CsvDb.cs
+++ b/NewLife.Core/IO/CsvDb.cs
@@ -12,7 +12,7 @@ namespace NewLife.IO
{
/// <summary>Csv文件轻量级数据库</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/csv_db
+ /// 文档 https://newlifex.com/core/csv_db
/// 适用于大量数据需要快速存储、快速查找,很少修改和删除的场景。
/// 在桌面客户端中,关系型数据库SQLite很容易因非法关机而损坏,本数据库能跳过损坏行,自动恢复。
/// </remarks>
diff --git a/NewLife.Core/IO/CsvFile.cs b/NewLife.Core/IO/CsvFile.cs
index 7effc78..ae13c8a 100644
--- a/NewLife.Core/IO/CsvFile.cs
+++ b/NewLife.Core/IO/CsvFile.cs
@@ -11,7 +11,7 @@ namespace NewLife.IO
{
/// <summary>Csv文件</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/csv_file
+ /// 文档 https://newlifex.com/core/csv_file
/// 支持整体读写以及增量式读写,目标是读写超大Csv文件
/// </remarks>
#if NET5_0_OR_GREATER || NETSTANDARD2_1_OR_GREATER
diff --git a/NewLife.Core/IO/ExcelReader.cs b/NewLife.Core/IO/ExcelReader.cs
index bff86bc..8bc5c90 100644
--- a/NewLife.Core/IO/ExcelReader.cs
+++ b/NewLife.Core/IO/ExcelReader.cs
@@ -10,7 +10,7 @@ namespace NewLife.IO
{
/// <summary>轻量级Excel读取器,仅用于导入数据</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/excel_reader
+ /// 文档 https://newlifex.com/core/excel_reader
/// 仅支持xlsx格式,本质上是压缩包,内部xml。
/// 可根据xml格式扩展读取自己想要的内容。
/// </remarks>
diff --git a/NewLife.Core/IO/IOHelper.cs b/NewLife.Core/IO/IOHelper.cs
index 60c5b80..d3d9ce4 100644
--- a/NewLife.Core/IO/IOHelper.cs
+++ b/NewLife.Core/IO/IOHelper.cs
@@ -11,7 +11,7 @@ namespace NewLife
{
/// <summary>IO工具类</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/io_helper
+ /// 文档 https://newlifex.com/core/io_helper
/// </remarks>
public static class IOHelper
{
diff --git a/NewLife.Core/IO/PathHelper.cs b/NewLife.Core/IO/PathHelper.cs
index 4ce9446..8f6b5de 100644
--- a/NewLife.Core/IO/PathHelper.cs
+++ b/NewLife.Core/IO/PathHelper.cs
@@ -9,7 +9,7 @@ namespace System.IO
{
/// <summary>路径操作帮助</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/path_helper
+ /// 文档 https://newlifex.com/core/path_helper
/// </remarks>
public static class PathHelper
{
diff --git a/NewLife.Core/Log/ILog.cs b/NewLife.Core/Log/ILog.cs
index 27e3277..717a29b 100644
--- a/NewLife.Core/Log/ILog.cs
+++ b/NewLife.Core/Log/ILog.cs
@@ -5,7 +5,7 @@ namespace NewLife.Log
{
/// <summary>日志接口</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/log
+ /// 文档 https://newlifex.com/core/log
/// </remarks>
public interface ILog
{
diff --git a/NewLife.Core/Log/Logger.cs b/NewLife.Core/Log/Logger.cs
index 9d3b4cd..a6d6714 100644
--- a/NewLife.Core/Log/Logger.cs
+++ b/NewLife.Core/Log/Logger.cs
@@ -257,7 +257,7 @@ namespace NewLife.Log
sb.AppendFormat("#ThreadPool: Min={0}/{1}, Max={2}/{3}, Available={4}/{5}\r\n", minWorker, minIO, maxWorker, maxIO, avaWorker, avaIO);
sb.AppendFormat("#Date: {0:yyyy-MM-dd}\r\n", DateTime.Now);
- sb.AppendFormat("#详解:{0}\r\n", "https://www.yuque.com/smartstone/nx/log");
+ sb.AppendFormat("#详解:{0}\r\n", "https://newlifex.com/core/log");
sb.AppendFormat("#字段: 时间 线程ID 线程池Y/网页W/普通N/定时T 线程名/任务ID 消息内容\r\n");
sb.AppendFormat("#Fields: Time ThreadID Kind Name Message\r\n");
diff --git a/NewLife.Core/Log/XTrace.cs b/NewLife.Core/Log/XTrace.cs
index 3ec96b8..a12abde 100644
--- a/NewLife.Core/Log/XTrace.cs
+++ b/NewLife.Core/Log/XTrace.cs
@@ -16,7 +16,7 @@ namespace NewLife.Log
{
/// <summary>日志类,包含跟踪调试功能</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/log
+ /// 文档 https://newlifex.com/core/log
///
/// 该静态类包括写日志、写调用栈和Dump进程内存等调试功能。
///
diff --git a/NewLife.Core/Model/Actor.cs b/NewLife.Core/Model/Actor.cs
index cdf4508..947c5f0 100644
--- a/NewLife.Core/Model/Actor.cs
+++ b/NewLife.Core/Model/Actor.cs
@@ -9,7 +9,7 @@ namespace NewLife.Model
{
/// <summary>无锁并行编程模型</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/actor
+ /// 文档 https://newlifex.com/core/actor
///
/// 独立线程轮询消息队列,简单设计避免影响默认线程池。
/// 适用于任务颗粒较大的场合,例如IO操作。
diff --git a/NewLife.Core/Model/Host.cs b/NewLife.Core/Model/Host.cs
index e20d9ae..aced236 100644
--- a/NewLife.Core/Model/Host.cs
+++ b/NewLife.Core/Model/Host.cs
@@ -8,7 +8,7 @@ namespace NewLife.Model
{
/// <summary>轻量级主机服务</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/host
+ /// 文档 https://newlifex.com/core/host
/// </remarks>
public interface IHostedService
{
@@ -25,7 +25,7 @@ namespace NewLife.Model
/// <summary>轻量级应用主机</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/host
+ /// 文档 https://newlifex.com/core/host
/// </remarks>
public interface IHost
{
@@ -47,7 +47,7 @@ namespace NewLife.Model
/// <summary>轻量级应用主机</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/host
+ /// 文档 https://newlifex.com/core/host
/// </remarks>
public class Host : IHost
{
@@ -152,7 +152,7 @@ namespace NewLife.Model
/// <summary>后台任务</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/host
+ /// 文档 https://newlifex.com/core/host
/// </remarks>
public abstract class BackgroundService : IHostedService, IDisposable
{
diff --git a/NewLife.Core/Model/IObjectContainer.cs b/NewLife.Core/Model/IObjectContainer.cs
index 2d23817..e604da7 100644
--- a/NewLife.Core/Model/IObjectContainer.cs
+++ b/NewLife.Core/Model/IObjectContainer.cs
@@ -5,7 +5,7 @@ namespace NewLife.Model
{
/// <summary>轻量级对象容器,支持注入</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/object_container
+ /// 文档 https://newlifex.com/core/object_container
/// </remarks>
public interface IObjectContainer
{
diff --git a/NewLife.Core/Model/ObjectContainer.cs b/NewLife.Core/Model/ObjectContainer.cs
index 7905644..42cfa87 100644
--- a/NewLife.Core/Model/ObjectContainer.cs
+++ b/NewLife.Core/Model/ObjectContainer.cs
@@ -8,7 +8,7 @@ namespace NewLife.Model
{
/// <summary>轻量级对象容器,支持注入</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/object_container
+ /// 文档 https://newlifex.com/core/object_container
/// </remarks>
public class ObjectContainer : IObjectContainer
{
diff --git a/NewLife.Core/NewLife.Core.csproj b/NewLife.Core/NewLife.Core.csproj
index 93af4ef..398bdef 100644
--- a/NewLife.Core/NewLife.Core.csproj
+++ b/NewLife.Core/NewLife.Core.csproj
@@ -20,7 +20,7 @@
<PropertyGroup>
<PackageId>$(AssemblyName)</PackageId>
<Authors>$(Company)</Authors>
- <PackageProjectUrl>https://www.yuque.com/smartstone/nx</PackageProjectUrl>
+ <PackageProjectUrl>https://newlifex.com/core</PackageProjectUrl>
<PackageIcon>leaf.png</PackageIcon>
<RepositoryUrl>https://github.com/NewLifeX/X</RepositoryUrl>
<RepositoryType>git</RepositoryType>
diff --git a/NewLife.Core/Reflection/Reflect.cs b/NewLife.Core/Reflection/Reflect.cs
index 0320adc..d57162e 100644
--- a/NewLife.Core/Reflection/Reflect.cs
+++ b/NewLife.Core/Reflection/Reflect.cs
@@ -9,7 +9,7 @@ namespace NewLife.Reflection
{
/// <summary>反射工具类</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/reflect
+ /// 文档 https://newlifex.com/core/reflect
/// </remarks>
public static class Reflect
{
diff --git a/NewLife.Core/Reflection/ScriptEngine.cs b/NewLife.Core/Reflection/ScriptEngine.cs
index ef406cf..9bdff8c 100644
--- a/NewLife.Core/Reflection/ScriptEngine.cs
+++ b/NewLife.Core/Reflection/ScriptEngine.cs
@@ -15,7 +15,7 @@ namespace NewLife.Reflection
{
/// <summary>脚本引擎</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/script_engine
+ /// 文档 https://newlifex.com/core/script_engine
///
/// 三大用法:
/// 1,单个表达式,根据参数计算表达式结果并返回
diff --git a/NewLife.Core/Security/SecurityHelper.cs b/NewLife.Core/Security/SecurityHelper.cs
index eac5cbb..4e3bce3 100644
--- a/NewLife.Core/Security/SecurityHelper.cs
+++ b/NewLife.Core/Security/SecurityHelper.cs
@@ -8,7 +8,7 @@ namespace NewLife
{
/// <summary>安全算法</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/security_helper
+ /// 文档 https://newlifex.com/core/security_helper
/// </remarks>
public static class SecurityHelper
{
diff --git a/NewLife.Core/Serialization/Json/IJsonHost.cs b/NewLife.Core/Serialization/Json/IJsonHost.cs
index 90c1c97..8bb2905 100644
--- a/NewLife.Core/Serialization/Json/IJsonHost.cs
+++ b/NewLife.Core/Serialization/Json/IJsonHost.cs
@@ -6,7 +6,7 @@ namespace NewLife.Serialization
{
/// <summary>Json序列化接口</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/json
+ /// 文档 https://newlifex.com/core/json
/// </remarks>
public interface IJsonHost
{
@@ -33,7 +33,7 @@ namespace NewLife.Serialization
/// <summary>Json助手</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/json
+ /// 文档 https://newlifex.com/core/json
/// </remarks>
public static class JsonHelper
{
diff --git a/NewLife.Core/Serialization/Json/Json.cs b/NewLife.Core/Serialization/Json/Json.cs
index 9cb7f6e..3250371 100644
--- a/NewLife.Core/Serialization/Json/Json.cs
+++ b/NewLife.Core/Serialization/Json/Json.cs
@@ -11,7 +11,7 @@ namespace NewLife.Serialization
{
/// <summary>Json序列化</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/json
+ /// 文档 https://newlifex.com/core/json
/// </remarks>
public class Json : FormatterBase, IJson
{
diff --git a/NewLife.Core/Serialization/Json/JsonParser.cs b/NewLife.Core/Serialization/Json/JsonParser.cs
index 6e2dc04..8b94465 100644
--- a/NewLife.Core/Serialization/Json/JsonParser.cs
+++ b/NewLife.Core/Serialization/Json/JsonParser.cs
@@ -7,7 +7,7 @@ namespace NewLife.Serialization
{
/// <summary>Json分析器</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/json
+ /// 文档 https://newlifex.com/core/json
/// </remarks>
public class JsonParser
{
diff --git a/NewLife.Core/Serialization/Json/JsonReader.cs b/NewLife.Core/Serialization/Json/JsonReader.cs
index 17305c5..bb54dac 100644
--- a/NewLife.Core/Serialization/Json/JsonReader.cs
+++ b/NewLife.Core/Serialization/Json/JsonReader.cs
@@ -11,7 +11,7 @@ namespace NewLife.Serialization
{
/// <summary>Json读取器</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/json
+ /// 文档 https://newlifex.com/core/json
/// </remarks>
public class JsonReader
{
diff --git a/NewLife.Core/Serialization/Json/JsonWriter.cs b/NewLife.Core/Serialization/Json/JsonWriter.cs
index d773f1e..27c1a13 100644
--- a/NewLife.Core/Serialization/Json/JsonWriter.cs
+++ b/NewLife.Core/Serialization/Json/JsonWriter.cs
@@ -13,7 +13,7 @@ namespace NewLife.Serialization
{
/// <summary>Json写入器</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/json
+ /// 文档 https://newlifex.com/core/json
/// </remarks>
public class JsonWriter
{
diff --git a/NewLife.Core/Threading/TimerX.cs b/NewLife.Core/Threading/TimerX.cs
index 844a0ca..fcc710a 100644
--- a/NewLife.Core/Threading/TimerX.cs
+++ b/NewLife.Core/Threading/TimerX.cs
@@ -9,7 +9,7 @@ namespace NewLife.Threading
{
/// <summary>不可重入的定时器,支持Cron</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/timerx
+ /// 文档 https://newlifex.com/core/timerx
///
/// 为了避免系统的Timer可重入的问题,差别在于本地调用完成后才开始计算时间间隔。这实际上也是经常用到的。
///
diff --git a/NewLife.Core/Web/TokenProvider.cs b/NewLife.Core/Web/TokenProvider.cs
index 0aa1969..1c95189 100644
--- a/NewLife.Core/Web/TokenProvider.cs
+++ b/NewLife.Core/Web/TokenProvider.cs
@@ -6,7 +6,7 @@ namespace NewLife.Web
{
/// <summary>令牌提供者</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/token_provider
+ /// 文档 https://newlifex.com/core/token_provider
/// </remarks>
public class TokenProvider
{
diff --git a/NewLife.Core/Yun/OssClient.cs b/NewLife.Core/Yun/OssClient.cs
index b5918a0..93958fd 100644
--- a/NewLife.Core/Yun/OssClient.cs
+++ b/NewLife.Core/Yun/OssClient.cs
@@ -14,7 +14,7 @@ namespace NewLife.Yun
{
/// <summary>阿里云文件存储</summary>
/// <remarks>
- /// 文档 https://www.yuque.com/smartstone/nx/oss
+ /// 文档 https://newlifex.com/core/oss
/// </remarks>
public class OssClient
{
diff --git a/NewLife.Security/NewLife.Security.csproj b/NewLife.Security/NewLife.Security.csproj
index 26b6932..e4a472a 100644
--- a/NewLife.Security/NewLife.Security.csproj
+++ b/NewLife.Security/NewLife.Security.csproj
@@ -19,7 +19,7 @@
<PropertyGroup>
<PackageId>$(AssemblyName)</PackageId>
<Authors>$(Company)</Authors>
- <PackageProjectUrl>https://www.yuque.com/smartstone/nx</PackageProjectUrl>
+ <PackageProjectUrl>https://newlifex.com/core</PackageProjectUrl>
<PackageIcon>leaf.png</PackageIcon>
<RepositoryUrl>https://github.com/NewLifeX/X</RepositoryUrl>
<RepositoryType>git</RepositoryType>
diff --git a/NewLife.WinCore/NewLife.WinCore.csproj b/NewLife.WinCore/NewLife.WinCore.csproj
index d243bab..7776a71 100644
--- a/NewLife.WinCore/NewLife.WinCore.csproj
+++ b/NewLife.WinCore/NewLife.WinCore.csproj
@@ -22,7 +22,7 @@
<PropertyGroup>
<PackageId>$(AssemblyName)</PackageId>
<Authors>$(Company)</Authors>
- <PackageProjectUrl>https://www.yuque.com/smartstone/nx</PackageProjectUrl>
+ <PackageProjectUrl>https://newlifex.com/core</PackageProjectUrl>
<PackageIcon>leaf.png</PackageIcon>
<RepositoryUrl>https://github.com/NewLifeX/X</RepositoryUrl>
<RepositoryType>git</RepositoryType>
diff --git a/Readme.MD b/Readme.MD
index 4fb546d..0424aa4 100644
--- a/Readme.MD
+++ b/Readme.MD
@@ -8,7 +8,7 @@
核心基础组件,日志(文件/网络)、配置(XML/Json/Http)、缓存(内存/Redis)、网络(Tcp/Udp/Http)、RPC框架、序列化(Binary/XML/Json)、APM性能追踪。
-核心库教程:[https://www.yuque.com/smartstone/nx](https://www.yuque.com/smartstone/nx)
+核心库教程:[https://newlifex.com/core](https://newlifex.com/core)
## 新生命项目矩阵
各项目默认支持net6.0/netstandard2.1,旧版(2021.1225)支持net5.0/netstandard2.0/net4.5/net4.0/net2.0
@@ -60,7 +60,7 @@
[序列化]:https://github.com/NewLifeX/X/tree/master/NewLife.Core/Serialization
## 新生命开发团队
-
+
新生命团队(NewLife)成立于2002年,是新时代物联网行业解决方案提供者,致力于提供软硬件应用方案咨询、系统架构规划与开发服务。
团队主导的开源NewLife系列组件已被广泛应用于各行业,Nuget累计下载量高达60余万次。
@@ -69,10 +69,8 @@
我们将不断通过服务的持续改进,成为客户长期信赖的合作伙伴,通过不断的创新和发展,成为国内优秀的IT服务供应商。
`新生命团队始于2002年,部分开源项目具有20年以上漫长历史,源码库保留有2010年以来所有修改记录`
-网站:https://www.NewLifeX.com
-开源:https://github.com/NewLifeX
-教程:https://www.yuque.com/smartstone
-博客:https://nnhy.cnblogs.com
+网站:https://newlifex.com
+开源:https://github.com/newlifex
QQ群:1600800/1600838
微信公众号:
-
+
diff --git a/Test/appsettings.json b/Test/appsettings.json
index 0debf54..6350666 100644
--- a/Test/appsettings.json
+++ b/Test/appsettings.json
@@ -1,5 +1,5 @@
{
- "Url": "https://www.newlifex.com/",
+ "Url": "https://newlifex.com/",
"ConnectionStrings": {
"MySQL.AppSettings": {
"connectionString": /*中间注释*/ "Server=.;Port=3306;Database=mysql;Uid=MySQL.default;Pwd=;",
diff --git a/XUnitTest.Core/Http/HttpCodecTests.cs b/XUnitTest.Core/Http/HttpCodecTests.cs
index 1f6eb28..12e4f3c 100644
--- a/XUnitTest.Core/Http/HttpCodecTests.cs
+++ b/XUnitTest.Core/Http/HttpCodecTests.cs
@@ -13,10 +13,10 @@ namespace XUnitTest.Http
public class HttpCodecTests
{
[Theory(DisplayName = "读取GET")]
- [InlineData("GET /123.html HTTP/1.1\r\nHost: www.newlifex.com\r\n\r\n")]
- [InlineData("GET /123.html HTTP/1.1\r\nHost: www.newlifex.com\r\nContent-Length:0\r\n\r\n")]
- //[InlineData("GET /123.html\r\nHost: www.newlifex.com\r\n")]
- //[InlineData("GET /123.html\r\nHost: www.newlifex.com")]
+ [InlineData("GET /123.html HTTP/1.1\r\nHost: newlifex.com\r\n\r\n")]
+ [InlineData("GET /123.html HTTP/1.1\r\nHost: newlifex.com\r\nContent-Length:0\r\n\r\n")]
+ //[InlineData("GET /123.html\r\nHost: newlifex.com\r\n")]
+ //[InlineData("GET /123.html\r\nHost: newlifex.com")]
public void ReadGetMessge(String http)
{
var msg = new HttpMessage();
@@ -28,13 +28,13 @@ namespace XUnitTest.Http
Assert.Equal("GET", msg.Method);
Assert.Equal("/123.html", msg.Uri);
- Assert.Equal("www.newlifex.com", msg.Headers["host"]);
+ Assert.Equal("newlifex.com", msg.Headers["host"]);
}
[Theory(DisplayName = "读取POST")]
- [InlineData("POST /123.ashx HTTP/1.1\r\nHost: www.newlifex.com\r\nContent-Length:9\r\n\r\ncode=abcd")]
- [InlineData("POST /123.ashx HTTP/1.1\r\nHost: www.newlifex.com\r\nContent-Length:0\r\n\r\n")]
- [InlineData("POST /123.ashx HTTP/1.1\r\nHost: www.newlifex.com\r\n\r\n")]
+ [InlineData("POST /123.ashx HTTP/1.1\r\nHost: newlifex.com\r\nContent-Length:9\r\n\r\ncode=abcd")]
+ [InlineData("POST /123.ashx HTTP/1.1\r\nHost: newlifex.com\r\nContent-Length:0\r\n\r\n")]
+ [InlineData("POST /123.ashx HTTP/1.1\r\nHost: newlifex.com\r\n\r\n")]
public void ReadPostMessage(String http)
{
var msg = new HttpMessage();
@@ -46,7 +46,7 @@ namespace XUnitTest.Http
Assert.Equal("POST", msg.Method);
Assert.Equal("/123.ashx", msg.Uri);
- Assert.Equal("www.newlifex.com", msg.Headers["host"]);
+ Assert.Equal("newlifex.com", msg.Headers["host"]);
var body = msg.Payload;
Assert.NotNull(body);
@@ -67,8 +67,8 @@ namespace XUnitTest.Http
}
[Theory(DisplayName = "写入编码")]
- [InlineData("GET /123.html HTTP/1.1\r\nHost: www.newlifex.com\r\n\r\n")]
- [InlineData("POST /123.ashx HTTP/1.1\r\nHost: www.newlifex.com\r\nContent-Length:9\r\n\r\ncode=abcd")]
+ [InlineData("GET /123.html HTTP/1.1\r\nHost: newlifex.com\r\n\r\n")]
+ [InlineData("POST /123.ashx HTTP/1.1\r\nHost: newlifex.com\r\nContent-Length:9\r\n\r\ncode=abcd")]
public void WriteCodec(String http)
{
var pk = http.GetBytes();
@@ -83,7 +83,7 @@ namespace XUnitTest.Http
}
[Theory(DisplayName = "读取编码")]
- [InlineData("GET /123.html HTTP/1.1\r\nHost: www.newlifex.com\r\n\r\n", null)]
+ [InlineData("GET /123.html HTTP/1.1\r\nHost: newlifex.com\r\n\r\n", null)]
public void ReadCodec(String http, String http2)
{
var pk = new Packet(http.GetBytes());
@@ -120,7 +120,7 @@ namespace XUnitTest.Http
}
[Theory(DisplayName = "读取编码")]
- [InlineData("POST /123.ashx HTTP/1.1\r\nHost: www.newlifex.com\r\nContent-Length:9\r\n\r\ncode=abcd", null)]
+ [InlineData("POST /123.ashx HTTP/1.1\r\nHost: newlifex.com\r\nContent-Length:9\r\n\r\ncode=abcd", null)]
public void ReadCodec2(String http, String http2)
{
var pk = new Packet(http.GetBytes());
@@ -157,7 +157,7 @@ namespace XUnitTest.Http
}
[Theory(DisplayName = "读取编码")]
- [InlineData("POST /123.ashx HTTP/1.1\r\nHost: www.newlifex.com\r\nContent-Length:9\r\n\r\n", "code=abcd")]
+ [InlineData("POST /123.ashx HTTP/1.1\r\nHost: newlifex.com\r\nContent-Length:9\r\n\r\n", "code=abcd")]
public void ReadCodec3(String http, String http2)
{
var pk = new Packet(http.GetBytes());
diff --git a/XUnitTest.Core/Log/TracerTests.cs b/XUnitTest.Core/Log/TracerTests.cs
index c34de41..218eb5a 100644
--- a/XUnitTest.Core/Log/TracerTests.cs
+++ b/XUnitTest.Core/Log/TracerTests.cs
@@ -294,7 +294,7 @@ namespace XUnitTest.Log
var http = tracer.CreateHttpClient();
http.DefaultRequestHeaders.UserAgent.ParseAdd("tracer_test v1.3");
- await http.GetStringAsync("https://www.newlifex.com?id=1234");
+ await http.GetStringAsync("https://newlifex.com?id=1234");
await Assert.ThrowsAnyAsync<Exception>(async () =>
{
// 故意写错地址,让它抛出异常
@@ -305,7 +305,7 @@ namespace XUnitTest.Log
var bs = tracer.TakeAll();
var keys = bs.Select(e => e.Name).ToArray();
Assert.Equal(2, bs.Length);
- Assert.Contains("https://www.newlifex.com/", keys);
+ Assert.Contains("https://newlifex.com/", keys);
Assert.Contains("https://www.newlifexxx.com/notfound", keys);
// 其中一项
diff --git a/XUnitTest.Core/Net/NetUriTests.cs b/XUnitTest.Core/Net/NetUriTests.cs
index 3a10b34..084542f 100644
--- a/XUnitTest.Core/Net/NetUriTests.cs
+++ b/XUnitTest.Core/Net/NetUriTests.cs
@@ -55,7 +55,7 @@ namespace XUnitTest.Net
[Fact]
public void ParseAddress()
{
- var addrs = NetUri.ParseAddress("www.newlifex.com");
+ var addrs = NetUri.ParseAddress("newlifex.com");
Assert.NotNull(addrs);
//Assert.Equal(3, addrs.Length);
Assert.True(addrs.Length > 0);
@@ -68,8 +68,8 @@ namespace XUnitTest.Net
Assert.Single(addrs2);
Assert.Equal("240e:e0:9930:2100:9914:b410:c7d8:c0a6", addrs2[0] + "");
- var uri = new NetUri("https://www.newlifex.com");
- Assert.Equal("www.newlifex.com", uri.Host);
+ var uri = new NetUri("https://newlifex.com");
+ Assert.Equal("newlifex.com", uri.Host);
var addrs3 = uri.GetAddresses();
//Assert.Equal(3, addrs3.Length);
Assert.True(addrs.Length > 0);
diff --git a/XUnitTest.Core/Net/TcpSessionTests.cs b/XUnitTest.Core/Net/TcpSessionTests.cs
index e1a2e08..8d73624 100644
--- a/XUnitTest.Core/Net/TcpSessionTests.cs
+++ b/XUnitTest.Core/Net/TcpSessionTests.cs
@@ -30,7 +30,7 @@ namespace XUnitTest.Net
var addr = NetHelper.GetIPsWithCache().FirstOrDefault(e => e.IsIPv4() && !IPAddress.IsLoopback(e));
Assert.NotNull(addr);
- var uri = new NetUri("https://www.newlifex.com");
+ var uri = new NetUri("https://newlifex.com");
var client = uri.CreateRemote() as TcpSession;
client.Local.Address = addr;
client.Open();
@@ -44,7 +44,7 @@ namespace XUnitTest.Net
var addr = NetHelper.GetIPsWithCache().FirstOrDefault(e => e.IsIPv4() && !IPAddress.IsLoopback(e));
Assert.NotNull(addr);
- var uri = new NetUri("https://www.newlifex.com");
+ var uri = new NetUri("https://newlifex.com");
var client = uri.CreateRemote() as TcpSession;
client.Open();
@@ -57,8 +57,8 @@ namespace XUnitTest.Net
Assert.True(Socket.OSSupportsIPv4);
Assert.True(Socket.OSSupportsIPv6);
- var entry = Dns.GetHostEntry("www.newlifex.com");
- //var entry = Dns.GetHostEntry("www.newlifex.com.w.cdngslb.com");
+ var entry = Dns.GetHostEntry("newlifex.com");
+ //var entry = Dns.GetHostEntry("newlifex.com.w.cdngslb.com");
Assert.NotNull(entry);
var addr = NetHelper.GetIPsWithCache().FirstOrDefault(e => !e.IsIPv4() && !IPAddress.IsLoopback(e));
@@ -66,7 +66,7 @@ namespace XUnitTest.Net
if (entry.AddressList.Any(_ => !_.IsIPv4()))
{
- var uri = new NetUri("https://www.newlifex.com");
+ var uri = new NetUri("https://newlifex.com");
var client = uri.CreateRemote();
client.Local.Address = addr;
client.Open();
diff --git a/XUnitTest.Core/TinyHttpClientTest.cs b/XUnitTest.Core/TinyHttpClientTest.cs
index a7bd7b5..413f5ab 100644
--- a/XUnitTest.Core/TinyHttpClientTest.cs
+++ b/XUnitTest.Core/TinyHttpClientTest.cs
@@ -20,7 +20,7 @@ namespace XUnitTest.Core
[Fact(DisplayName = "同步请求")]
public void SendTest()
{
- var uri = new Uri("http://www.newlifex.com");
+ var uri = new Uri("http://newlifex.com");
var client = new TinyHttpClient { Timeout = TimeSpan.FromSeconds(3), Log = XTrace.Log };
var html = client.Send(uri, null)?.ToStr();
@@ -31,7 +31,7 @@ namespace XUnitTest.Core
[Fact(DisplayName = "异步请求")]
public async void SendAsyncTest()
{
- var uri = new Uri("http://www.newlifex.com");
+ var uri = new Uri("http://newlifex.com");
var client = new TinyHttpClient { Timeout = TimeSpan.FromSeconds(3), Log = XTrace.Log };
var html = (await client.SendAsync(uri, null))?.ToStr();