Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 共享启动配置dotnet core 2 WebAPI_C#_.net Core_Shared Libraries_Asp.net Core Webapi - Fatal编程技术网

C# 共享启动配置dotnet core 2 WebAPI

C# 共享启动配置dotnet core 2 WebAPI,c#,.net-core,shared-libraries,asp.net-core-webapi,C#,.net Core,Shared Libraries,Asp.net Core Webapi,在使用多个API的项目中工作时,我们希望共享配置,以确保每个API都具有相同的logger配置等,并且我们可以将所有nuget包保留在Extensions类项目中 使用扩展来实现这一点,是实现共享启动配置的好方法吗?有更好的办法吗 扩展类 namespace Extensions { public static class Extensions { public static IServiceCollection AddExtensionsConfig(this

在使用多个API的项目中工作时,我们希望共享配置,以确保每个API都具有相同的logger配置等,并且我们可以将所有nuget包保留在Extensions类项目中

使用扩展来实现这一点,是实现共享启动配置的好方法吗?有更好的办法吗

扩展类

namespace Extensions
{
    public static class Extensions
    {
        public static IServiceCollection AddExtensionsConfig(this IServiceCollection services)
        {
            services.AddLoggerConfig();
            services.AddMvc();

            return services;
        }

        public static IApplicationBuilder UseExtensionsConfig(this IApplicationBuilder app)
        {
            //use logger
            app.UseLoggerConfig();

            // auth
            app.UseAuthentication();

            // set startup file to index.html for easy testing
            app.UseDefaultFiles();

            //enable CORS
            app.UseCorsConfig();

            //added support for static file
            app.UseStaticFiles();

            app.UseMvc();

            return app;
        }
    }
}
记录器扩展

namespace Extensions.Logger
{
    public static class LoggerServiceExtensions
    {
        public static IServiceCollection AddLoggerConfig(this IServiceCollection services)
        {
            //serilog
            services.AddLogging(loggingBuilder =>
             loggingBuilder.AddSerilog(dispose: true));

            var loggerServices = new ServiceCollection()
               .AddLogging(builder =>
               {
                   builder.AddSerilog();
               });

            return services;
        }

        public static IApplicationBuilder UseLoggerConfig(this IApplicationBuilder app)
        {
            //add serilog https://github.com/serilog/serilog-extensions-logging
            // https://github.com/serilog/serilog-extensions-logging/blob/dev/samples/Sample/Program.cs
            Log.Logger = new LoggerConfiguration()
            .Enrich.FromLogContext()
            .WriteTo.File("log.txt", rollingInterval: RollingInterval.Day)
            .CreateLogger();

            var startTime = DateTimeOffset.UtcNow;

            Log.Logger.Information("Started at {StartTime} and 0x{Hello:X} is hex of 42", startTime, 42);

            return app;
        }
    }
}
然后在启动配置服务中

// add config
services.AddExtensionsConfig();
和启动配置方法

// use config
app.UseExtensionsConfig();
使用扩展来实现这一点,是实现共享启动配置的好方法吗?有更好的办法吗


这是目前建议的做法。您还将在提供的大多数示例和第三部分扩展中看到此模式。asp.net-core的模块化特性允许这种首选方法

这是目前建议的方法。您还将在提供的大多数示例和第三部分扩展中看到此模式。asp.net-core的模块化特性允许使用这种首选方法感谢您的回答,再多征求一段时间的意见,如果我们能够达成共识,我们将接受您的答案,如果您手头有参考资料,请提供参考!