我有一个.net核心应用程序。如果当前配置不正确,我需要它失败。它可以继续运行,并且我需要关闭它。
我的配置服务看起来像这样。必须有一种方法来使应用程序在配置错误时停止。
public void ConfigureServices(IServiceCollection services)
{
if (Configuration["settings:connectionString"] == null) return;
}
引发异常
不停止应用程序所做的只是将其保留在我的日志中
应用程序启动异常:System.ArgumentNullException:值 不能为null。参数名称:settings:connectionString未定义 正确地 Xena.IdentityServer.Startup.ConfigureServices(IServiceCollection 服务)中 C:\ Development \ Xena \ xena-identityserver \ src \ Xena.IdentityServer \ Startup.cs:line 89 ---从上一个引发异常的位置开始的堆栈跟踪- System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()在 Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(IServiceCollection 服务) Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices() 在Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() 爆击:Microsoft.AspNetCore.Hosting.Internal.WebHost [6] 应用程序启动异常System.ArgumentNullException:值不能为null。参数名称:settings:connectionString不 在正确定义 Xena.IdentityServer.Startup.ConfigureServices(IServiceCollection 服务)中 C:\ Development \ Xena \ xena-identityserver \ src \ Xena.IdentityServer \ Startup.cs:line 89 ---从上一个引发异常的位置开始的堆栈跟踪- System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()在 Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(IServiceCollection 服务) Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices() 在Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
该站点仍处于打开状态,并且可以看到上面的同一页面。我需要停止应用程序。
答案 0 :(得分:3)
public void ConfigureServices(IServiceCollection services)
{
if (Configuration["settings:connectionString"] == null)
{
// Log?
System.Environment.Exit(160);
}
}
我在这里使用160
,因为Microsoft惯例建议将此作为“错误的论点”,尽管如此,我也乐于接受建议。
https://docs.microsoft.com/en-gb/windows/desktop/Debug/system-error-codes--0-499-
答案 1 :(得分:2)
为什么你不能throw
这样的异常
public void ConfigureServices(IServiceCollection services)
{
if (Configuration["settings:connectionString"] == null)
throw new ArgumentNullException("settings:connectionString Not defined correctly");
}