距离微软正式发布.NET 8.0已经有一段时间,这也是新的LTS(长期技术支持)版本,这个版本更新了多个新的特性,并且提升了性能,似乎每一代框架发布总是能比上一代提升不少性能。近期抽空将本网站平台适配到了.NET 8.0,暂时没有发现什么Breaking Changes,一切很平滑,除了升级到.NET 8.0外,还对以下特性进行了修改: 1. 软件层面 1.1 验证码模块 验证码(CAPTCHA)又称全自动区分计算机和人类的图灵测试,之前本站验证码使用了两套:一套是Edi Wang开发的图形化验证码,主要用在评论发布页面;另一套是Google的reCAPTCHA,主要用在联系表单。但是这两套验证码都存在问题,其中Edi Wang的图形验证码使用了传统的数字字母图片,为了避免OCR还加了变形扭曲,在Web 2.0兴起的年代,这种方法足够抗击机器人和爬虫的不法攻击,随着人工打码平台和 …

本网站自从3月上线以来已经有8个月时间,期间也有各种bug,也勉强修复了,最初网站运行在.NET 5.0平台上,后来一直关注着.NET 6.0的进展,在微软正式Release的时候立马开始适配新的6.0平台,期间也遇到过各种坑,留有这篇文章仅做记载。 1 安装Visual Studio 2022 因为Visual Studio 2019不再支持NET 6.0 SDK,如果想继续在VS平台下开发,必须升级到Visual Studio 2022,对于个人来说我们选择Community版本就可以了,安装完成后选择用最新的VS2022打开你的项目。 2 升级NuGet Package到最新版本 由于我是等到.NET 6.0正式版出来的时候升级的,大部分的第三方包(Package)已经适配了.NET 6.0,可以直接升级,但仍然建议各位查阅项目官方的文档,特别是breaking changes以及用 …

.NET Core多语言本地化支持可以让所开发的应用更加国际化,但是不同操作系统平台之间可能会遇到一些特有的部署问题,本文将介绍我在Linux环境下部署国际化应用过程中遇到的zh-CN中文资源丢失问题的解决方案,当然可能有其他更好的方案,这里不做推荐,本文操作使用的软件环境是Debian 11、ASP.NET 5.0、nginx,仅供参考。 1 多语言国际化应用的建立 .NET Core本地化方式参考《Globalization and localization in ASP.NET Core》,通常情况下,在Startup.cs的ConfigureServices部分会包含如下代码: services.AddLocalization(options => options.ResourcesPath = "Resources"); services.AddMvc() . …

大多数情况下我们开发的应用可能需要与其他服务进行交互,比如数据库服务、第三方服务等等,出于安全考虑,这些服务的交互都需要发起端提供认证凭据,这里可能是账号密码、API Key等,这里就涉及到认证凭据的保管问题,很长一段时间我们都是将认证凭据写死到配置文件中,这样做一开始是简单可行,但是随后你就会发现带来了一系列的问题:首先你的所有开发环境和生产环境都需要配置成一样的,比如生产环境数据库账号和密码和开发环境数据库账号和密码最好是一致的,否则部署到生产环境则需要手动修改这个认证凭据,当然你也可以通过配置分离或者环境变量控制来避免这个问题;其次是代码仓库提交,尤其是开源项目,至今GitHub公共库仍然存在大量配置文件明文保管着敏感凭据;最后分布式开发或者交付麻烦,需要团队合作或者直接提供给终端用户的项目,团队成员或者终端用户需要修改为本地环境凭据。 1 .NET Core与secrets. …


2021年以前发表的部分文章已经被存档到,这些文章将不再进行更新维护。