【问题标题】:How to use Program.cs file in .NET 6如何在 .NET 6 中使用 Program.cs 文件
【发布时间】:2022-02-06 15:08:19
【问题描述】:

在最新版本的.Net 中,Startup 类和 Program 类被合并在一起,并且 using 和其他语句被简化并从 Program.cs 中删除。我真的很困惑如何在一个文件中使用它。 请帮我将所有服务迁移到 program.cs 文件。

Startup.cs 文件:

public class Startup
{
    private readonly IConfigurationRoot configRoot;
    private AppSettings AppSettings { get; set; }

    public Startup(IConfiguration configuration)
    {
        Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(configuration).CreateLogger();
        Configuration = configuration;

        IConfigurationBuilder builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json");
        configRoot = builder.Build();

        AppSettings = new AppSettings();
        Configuration.Bind(AppSettings);
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddController();

        services.AddDbContext(Configuration, configRoot);

        services.AddIdentityService(Configuration);

        services.AddAutoMapper();

        services.AddScopedServices();

        services.AddTransientServices();

        services.AddSwaggerOpenAPI();

        services.AddMailSetting(Configuration);

        services.AddServiceLayer();

        services.AddVersion();

        services.AddHealthCheck(AppSettings, Configuration);

        services.AddFeatureManagement();
    }



    public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory log)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseCors(options =>
             options.WithOrigins("http://localhost:3000")
             .AllowAnyHeader()
             .AllowAnyMethod());

        app.ConfigureCustomExceptionMiddleware();

        log.AddSerilog();

        //app.ConfigureHealthCheck();


        app.UseRouting();

        app.UseAuthentication();

        app.UseAuthorization();
        app.ConfigureSwagger();
        app.UseHealthChecks("/healthz", new HealthCheckOptions
        {
            Predicate = _ => true,
            ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse,
            ResultStatusCodes =
            {
                [HealthStatus.Healthy] = StatusCodes.Status200OK,
                [HealthStatus.Degraded] = StatusCodes.Status500InternalServerError,
                [HealthStatus.Unhealthy] = StatusCodes.Status503ServiceUnavailable,
            },
        }).UseHealthChecksUI(setup =>
          {
              setup.ApiPath = "/healthcheck";
              setup.UIPath = "/healthcheck-ui";
              //setup.AddCustomStylesheet("Customization/custom.css");
          });


        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
}

Program.cs 文件:

 public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

【问题讨论】:

  • "在最新版本的 .Net 中,Startup 类和 Program 类合并在一起"
  • 您仍然可以保持一切原样,只需将框架更改为 net6.0 并更新所有包

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


【解决方案1】:

您可以在 csproj 文件中禁用隐式使用

<PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
</PropertyGroup>

【讨论】:

    猜你喜欢
    • 2021-11-22
    • 2022-01-18
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 2022-11-22
    • 1970-01-01
    • 2022-11-02
    相关资源
    最近更新 更多