// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, LibraryContext libraryContext) { loggerFactory.AddConsole(); loggerFactory.AddDebug(LogLevel.Information); // Todo: Arquivo de log desse provider não está sendo criado. loggerFactory.AddNLog(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler(appBuilder => { appBuilder.Run(async context => { var exceptionHandlerFeature = context.Features.Get <IExceptionHandlerFeature>(); if (exceptionHandlerFeature != null) { var logger = loggerFactory.CreateLogger("Global exception logger"); logger.LogError(500, exceptionHandlerFeature.Error, exceptionHandlerFeature.Error.Message); } context.Response.StatusCode = 500; await context.Response.WriteAsync("An unexpected fault happened. Try again later."); }); }); } AutoMapper.Mapper.Initialize(cfg => { cfg.CreateMap <Entities.Author, Models.AuthorDto>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => $"{src.FirstName} {src.LastName}")) .ForMember(dest => dest.Age, opt => opt.MapFrom(src => src.DateOfBirth.GetCurrentAge())); cfg.CreateMap <Entities.Book, Models.BookDto>(); cfg.CreateMap <Models.AuthorForCreationDto, Entities.Author>(); cfg.CreateMap <Models.BookForCreationDto, Entities.Book>(); cfg.CreateMap <Models.BookForUpdateDto, Entities.Book>(); cfg.CreateMap <Entities.Book, Models.BookForUpdateDto>(); }); libraryContext.EnsureSeedDataContext(); app.UseStatusCodePages(); app.UseMvc(); }