net core网站启动的时候,连接数据库,如果 这个时候 数据 库连接 不上,则net core网站 的运行会停止。这样的话,如果 服务器重启的话,netcore网站的启动比数据 库启动早的话,导致网站报错,既使后来数据库能够正常访问了,网站还是需要人工去重启一下才行。
这个不知道有什么办法,让net core在启动的时候 ,既然数据库连接不上,也不会停止,等数据库启动后,也能正常访问 ?
可以试试 EnableRetryOnFailure
services.AddDbContext<MyDbContext>(
options =>
{
options.UseSqlServer(
Configuration.GetConnectionString("db"),
builder =>
{
builder.EnableRetryOnFailure(
3,
TimeSpan.FromSeconds(10));
});
});
这个我测试了,但这个能够重新尝试连接数据库的前提是,我网站一开始是正常运行的情况下,中途数据库异常连接断开,这个时候 是会尝试去重新 连接,当数据库恢复的时候 ,网站又能够正常运行了。
但这个还是不能解决,我一开始网站启动,连接数据库异常的情况下,这个时候 是不会再次尝试去连接的。不知道这种情况有没有好的解决办法。因为我是把环境部署在docker里的,每次docker重启的时候,有很大的概率,数据库启动比网站启动要慢,导致网站打不开,每次要进行手动重新 启动才行
@李.net: 建议在 dockerfile 中添加网站的健康检查地址,在健康检查中检查数据库连接,这样连不上数据库时容器会处于启动失败状态,等连上数据库,容器会进入启动成功状态
启动的时候要查询数据库, 这肯定是你的业务代码. 修改一下代码逻辑.
如果想问怎么修改, 你得多贴一些代码了.
为什么报错会停止呢,网站启动就连接数据库不是必须的吧,或者在连接数据库的地方加异常处理,让网站正常启动就好了