如何在启动时使应用程序失败

时间:2018-10-31 10:15:15

标签: c# asp.net-core .net-core

我有一个.net核心应用程序。如果当前配置不正确,我需要它失败。它可以继续运行,并且我需要关闭它。

enter image description here

我的配置服务看起来像这样。必须有一种方法来使应用程序在配置错误时停止。

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()

该站点仍处于打开状态,并且可以看到上面的同一页面。我需要停止应用程序。

2 个答案:

答案 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");
   }