首页 > 解决方案 > 考虑通过将“EnableRetryOnFailure()”添加到 ASP.NET 核心 2.2 上的“UseSqlServer”调用来启用瞬时错误恢复能力

问题描述

我正在使用用 ASP.NET core 2.2 开发的 aspnetboilerplate 解决方案。后端部署在 azure 上,它使用提供的 SQL 服务器。

有时,当后端有很多请求要处理时,它会记录以下异常:

Mvc.ExceptionHandling.AbpExceptionFilter - 引发了一个异常,可能是由于暂时性故障。考虑通过将“EnableRetryOnFailure()”添加到“UseSqlServer”调用来启用瞬时错误恢复能力。System.InvalidOperationException:引发了一个异常,可能是由于暂时性故障。考虑通过将“EnableRetryOnFailure()”添加到“UseSqlServer”调用来启用瞬时错误恢复能力。---> System.Data.SqlClient.SqlException:从服务器接收结果时发生传输级错误

我试图解决这个问题,将此代码添加到我的 Startup.cs

public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            // MVC
            services.AddMvc(
                options => options.Filters.Add(new CorsAuthorizationFilterFactory(_defaultCorsPolicyName))
            ).AddJsonOptions(
            // To fix OldContract in Contract entity (self-referencing loop)

        services.AddDbContext<ManagerDbContext>(options =>
        {
            options.UseSqlServer(_appConfiguration["ConnectionStrings:Default"],
                sqlServerOptionsAction: builder =>
                {
                    builder.EnableRetryOnFailure(
                        maxRetryCount: 10,
                        maxRetryDelay: TimeSpan.FromSeconds(30),
                        errorNumbersToAdd: null);
                });
        });

    }

但问题并没有解决。

标签: c#sql-serveraspnetboilerplateasp.net-core-2.2

解决方案


推荐阅读