报错信息:The SSL connection could not be established, see inner exception.
看起来是SSL的问题,查了下资料和服务器安装了 OpenSSL 有关,直接拷贝一份证书过去,问题即可解决,执行以下linux命令即可:
cp /etc/pki/tls/cert.pem /usr/local/openssl/
然后重启你的.net core应用即可。
报错信息:The SSL connection could not be established, see inner exception.
看起来是SSL的问题,查了下资料和服务器安装了 OpenSSL 有关,直接拷贝一份证书过去,问题即可解决,执行以下linux命令即可:
cp /etc/pki/tls/cert.pem /usr/local/openssl/
然后重启你的.net core应用即可。
一个项目一直在线上运行了一年多,近期将它从windows平台移植到了linux平台运行,一切顺利。但是….操作过程中唯独增添了一个 NGINX 反向代理,最终导致了获取客户端请求IP不正确的问题,获取结果为:::ffff:127.0.0.1
以前以简单的获取NGINX转发的一个Header “X-Real-IP” 来获取的真实IP,今天查资料偶然发现还有个更简单的方式:
在.net core项目中的 Starup.cs 文件中加入以下代码即可:
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
原有项目中的代码不做改变:
string clientIP = _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString();
以上即可。
参考资料1:https://www.cnblogs.com/niao/p/10305953.html
参考资料2:https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-3.1
在 Rider 中没有像这样的 Visual Studio 中,这样的配置:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DocumentationFile>Office.WebApi.xml</DocumentationFile>
</PropertyGroup>
我们需要手动打开项目 *.csproj (在你的项目根目录) 文件,加入以下代码即可
如图:
后面使用 Rider 就可以编译出 xml 文件了。
// 连接字符串
string cnnStr = "User ID=ITGFS;Password=itsds#oracle;Data Source=\"(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 118.13.222.237)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = ORCL)))\";";
// 连接对象
OracleConnection cnn = new OracleConnection(cnnStr);
// 测试连接
cnn.Open();
cnn.Close();
通过以上代码就可以成功连接到 Oracle 服务器了,实际上 Nuget 搜索安装的包也就是 Oracle 为 .Net Core 提供的专用连接客户端。
运行电脑无需再安装其他的客户端即可运行。
分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移到Cassandra,因为Cassandra没有顺序ID生成机制,所以开发了这样一套全局唯一ID生成服务。
雪花算法的原始版本是 Scala 版,用于生成分布式ID(纯数字,时间顺序),订单编号等。
自增ID:对于数据敏感场景不宜使用,且不适合于分布式场景。
GUID:采用无意义字符串,数据量增大时造成访问过慢,且不宜排序。
源码地址: https://github.com/stulzq/snowflake-net
我一般直接在 .net core 项目中使用 Nuget 获得该组件,进行直接使用,如下图:
var worker = new IdWorker(1, 1);
long id = worker.NextId();
以上代码, IdWorker 应该以单实例模式运行,否则会出现重复Id。
理论上两个参数:
在同一workid,datacenterid下,1ms 能产生2^12 – 1(4095)个id。
不同workid,datacenterid,1ms能产生2^22 – 1(近420w)个id, 1秒钟产生42亿个id