我们有一个用asp.net核心编写的Web应用程序,可在Ubuntu 17.10上运行。
由于一些错误的决定,我们开始在与运行生产服务器的OS实例相同的OS实例上运行TeamCity(这是一个持续集成服务器)。同时,我们安装了数据库服务器(PostgreSQL)的另一个实例以用作登台数据库服务器,并设置TeamCity为登台git分支进行自动构建。全部在同一操作系统上。
当我们决定在同一OS实例中同时与Kestrel的两个实例同时运行时,事情就发了。
由于同时运行了两个Kestrel实例,因此我们会定期收到以下错误消息:
2018-08-24 11:03:28.1730 | 47 | ERROR | Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingProvider |刷新密钥环时发生错误。将在2分钟后重试。 System.UnauthorizedAccessException:拒绝访问路径“ /home/userRunningKestrelProcess/.aspnet/DataProtection-Keys”。 ---> System.IO.IOException:权限被拒绝
从那时起我们有了
但是错误仍然存在。它唯一消失的方法是重新启动服务器。
由于我们计划完全虚拟化生产环境,并使用当前的TeamCity服务器(在单独的OS实例上运行)使生产构建自动化,因此我们希望此错误消失,但是对于为什么会有所见解它正在发生(尽管我们怀疑同时运行两个版本的Kestrel是罪魁祸首),更重要的是,为什么在我们采取措施解决此问题之后,错误仍然出现。