前言
在真实的项目开发中,会有一些实际问题不经意之间困扰我们,尤其是那些你在翻书学习过程中不会重视的部分。比如,各环境(开发、测试、生产)下的配置文件使用;Cookie与Session中使用的加密方法(DataProtection)配置等等。下面将记录下我在项目中碰到一些问题。
欢迎来访本人的github上项目:https://github.com/yzbai/HB.Framework,一个辅助最新asp.net core 2 的框架类库。
各环境下配置
使用UserSecrets
开发Development环境下配置,一般写在appsettings.json或者appsettings.Development.json中,这本来没什么问题,不过如果你的项目决定托管在github上时,就有问题了。你的配置文件中的敏感信息会一同公之于众。所以一般在appsettings.json中敏感信息都用随便什么字符代替。
在项目上右键,Manage Secrets,然后在打开的secrets.json中写入真正的敏感信息,当然,这个信息你需要分享给你的项目组成员。
设置ASPNETCORE_ENVIRONMENT
开发环境下,在项目属性中,一般VS已经帮你设置好了ASPNETCORE_ENVIRONMENT为Development,不需要改动;
测试环境下,可以在windows系统中设置环境变量(系统->高级系统设置->环境变量)ASPNETCORE_ENVIRONMENT为Staging。
然后由项目发布人员,在测试服务器上上传appsettings.Staging.json,里面包含测试环境的配置,数据库等等。
当然也可以在.gitignore文件中添加
appsettings.Staging.json
appsettings.Production.json
然后项目发布人员,可以在visual studio 2017添加appsettings.Staging.json和appsetting.Production.json,这样不会被其他组员获取到。
配置DataProtection
DataProtection在单机开发阶段你不会体会到它的作用,但实际上它在Cookie等组件中起到重要的加密、解密作用,如果你不配置,那么当部署在多台IIS中时,会出现密钥不一致,解密失败无法验证的问题。多人开发测试时会出现困扰。应当配置如下:
其中加密用的密匙,使用保存在证书管理中的证书,CertificationThumbPrint是证书的“指纹”。而加密内容存储在Directory指定的文件夹中,这样避免原来存储在memory中后重启丢失。
关于证书的生成与遇到的“坑”,在其他文章中叙述。
结语
先记录到这里。