asp.net-core - 处理 Razor Pages ASP.NET Core 3.1 ConfigureServices services.AddDbContext<..>(..) 方法中的错误
问题描述
我们的 SQL Server 有时会关闭,从而导致 http 状态代码 500 错误页面。我们正在使用 Razor Pages/ASP.NET Core 3.1。是否可以优雅地捕获此错误并仍然显示从数据库中提取数据的页面(无论生产环境还是开发环境都需要这样做)?该页面使用 DI 通过 Startup.cs 中的 ConfigureServices 方法中的 AddDbContext<..>(..) 访问数据库。另一个问题是剃刀页面应用程序是通过调用 AddDbContext(..) 连接到 SQL Server 还是在 CreateModel OnGet 方法中完成?我在 OnGet 方法中尝试了 _context.Database.CanConnect() 但在哪里捕获抛出的异常?
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddDbContext<SampleContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SampleContext")));
}
public class CreateModel : PageModel
{
private readonly SampleContext _context;
public CreateModel(SampleContext context)
{
_context = context;
}
public IActionResult OnGet()
{
//if (_context.Database.CanConnect() == false)
// throw new Exception("Cannot connect to SQL Server.");
var x = _context...
return Page();
}
}
解决方案
推荐阅读
- java - 如何实时远程调试更改
- prolog - Prolog 中的“循环”,用 `fail` 替换目标
- javascript - 如何从 JSON 数组中获取值
- bash - 从一个文件中删除另一个文件中没有密钥的行
- python - Python pandas - 基于其他列的新列(字符串)
- azure - 并行更新管理 - Azure
- python - 在 CSV 列 python 中查找差异
- system-verilog - 是否可以使用带有 DPI 的打包结构
- amazon-web-services - CloudFormation中多个ECS服务定义之间如何使用同一套环境变量
- templates - 在 VS Code 中创建新的 Flutter Web 项目时的 Dart 模板请求