Removed filters and special errors handling from MVC
This commit is contained in:
parent
3056418c92
commit
a381a6923c
@ -6,9 +6,6 @@ global using System.Net;
|
|||||||
global using System.Security.Claims;
|
global using System.Security.Claims;
|
||||||
global using System.Text.Json;
|
global using System.Text.Json;
|
||||||
global using System.Threading.Tasks;
|
global using System.Threading.Tasks;
|
||||||
global using Basket.API.Infrastructure.ActionResults;
|
|
||||||
global using Basket.API.Infrastructure.Exceptions;
|
|
||||||
global using Basket.API.Infrastructure.Filters;
|
|
||||||
global using Basket.API.IntegrationEvents.EventHandling;
|
global using Basket.API.IntegrationEvents.EventHandling;
|
||||||
global using Basket.API.IntegrationEvents.Events;
|
global using Basket.API.IntegrationEvents.Events;
|
||||||
global using Basket.API.Model;
|
global using Basket.API.Model;
|
||||||
@ -16,10 +13,8 @@ global using Grpc.Core;
|
|||||||
global using GrpcBasket;
|
global using GrpcBasket;
|
||||||
global using Microsoft.AspNetCore.Authorization;
|
global using Microsoft.AspNetCore.Authorization;
|
||||||
global using Microsoft.AspNetCore.Builder;
|
global using Microsoft.AspNetCore.Builder;
|
||||||
global using Microsoft.AspNetCore.Hosting;
|
|
||||||
global using Microsoft.AspNetCore.Http;
|
global using Microsoft.AspNetCore.Http;
|
||||||
global using Microsoft.AspNetCore.Mvc;
|
global using Microsoft.AspNetCore.Mvc;
|
||||||
global using Microsoft.AspNetCore.Mvc.Filters;
|
|
||||||
global using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions;
|
global using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions;
|
||||||
global using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events;
|
global using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events;
|
||||||
global using Microsoft.eShopOnContainers.Services.Basket.API;
|
global using Microsoft.eShopOnContainers.Services.Basket.API;
|
||||||
@ -30,7 +25,6 @@ global using Microsoft.eShopOnContainers.Services.Basket.API.Model;
|
|||||||
global using Microsoft.eShopOnContainers.Services.Basket.API.Services;
|
global using Microsoft.eShopOnContainers.Services.Basket.API.Services;
|
||||||
global using Microsoft.Extensions.Configuration;
|
global using Microsoft.Extensions.Configuration;
|
||||||
global using Microsoft.Extensions.DependencyInjection;
|
global using Microsoft.Extensions.DependencyInjection;
|
||||||
global using Microsoft.Extensions.Hosting;
|
|
||||||
global using Microsoft.Extensions.Logging;
|
global using Microsoft.Extensions.Logging;
|
||||||
global using Services.Common;
|
global using Services.Common;
|
||||||
global using StackExchange.Redis;
|
global using StackExchange.Redis;
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
namespace Basket.API.Infrastructure.ActionResults;
|
|
||||||
|
|
||||||
public class InternalServerErrorObjectResult : ObjectResult
|
|
||||||
{
|
|
||||||
public InternalServerErrorObjectResult(object error)
|
|
||||||
: base(error)
|
|
||||||
{
|
|
||||||
StatusCode = StatusCodes.Status500InternalServerError;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
|||||||
namespace Basket.API.Infrastructure.Exceptions;
|
|
||||||
|
|
||||||
public class BasketDomainException : Exception
|
|
||||||
{
|
|
||||||
public BasketDomainException()
|
|
||||||
{ }
|
|
||||||
|
|
||||||
public BasketDomainException(string message)
|
|
||||||
: base(message)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
public BasketDomainException(string message, Exception innerException)
|
|
||||||
: base(message, innerException)
|
|
||||||
{ }
|
|
||||||
}
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
|||||||
namespace Basket.API.Infrastructure.Filters;
|
|
||||||
|
|
||||||
public partial class HttpGlobalExceptionFilter : IExceptionFilter
|
|
||||||
{
|
|
||||||
private readonly IWebHostEnvironment env;
|
|
||||||
private readonly ILogger<HttpGlobalExceptionFilter> logger;
|
|
||||||
|
|
||||||
public HttpGlobalExceptionFilter(IWebHostEnvironment env, ILogger<HttpGlobalExceptionFilter> logger)
|
|
||||||
{
|
|
||||||
this.env = env;
|
|
||||||
this.logger = logger;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void OnException(ExceptionContext context)
|
|
||||||
{
|
|
||||||
logger.LogError(new EventId(context.Exception.HResult),
|
|
||||||
context.Exception,
|
|
||||||
context.Exception.Message);
|
|
||||||
|
|
||||||
if (context.Exception.GetType() == typeof(BasketDomainException))
|
|
||||||
{
|
|
||||||
var json = new JsonErrorResponse
|
|
||||||
{
|
|
||||||
Messages = new[] { context.Exception.Message }
|
|
||||||
};
|
|
||||||
|
|
||||||
context.Result = new BadRequestObjectResult(json);
|
|
||||||
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var json = new JsonErrorResponse
|
|
||||||
{
|
|
||||||
Messages = new[] { "An error occurred. Try it again." }
|
|
||||||
};
|
|
||||||
|
|
||||||
if (env.IsDevelopment())
|
|
||||||
{
|
|
||||||
json.DeveloperMessage = context.Exception;
|
|
||||||
}
|
|
||||||
|
|
||||||
context.Result = new InternalServerErrorObjectResult(json);
|
|
||||||
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
|
|
||||||
}
|
|
||||||
context.ExceptionHandled = true;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
namespace Basket.API.Infrastructure.Filters;
|
|
||||||
|
|
||||||
public class JsonErrorResponse
|
|
||||||
{
|
|
||||||
public string[] Messages { get; set; }
|
|
||||||
|
|
||||||
public object DeveloperMessage { get; set; }
|
|
||||||
}
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
|||||||
namespace Basket.API.Infrastructure.Filters;
|
|
||||||
|
|
||||||
public class ValidateModelStateFilter : ActionFilterAttribute
|
|
||||||
{
|
|
||||||
public override void OnActionExecuting(ActionExecutingContext context)
|
|
||||||
{
|
|
||||||
if (context.ModelState.IsValid)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var validationErrors = context.ModelState
|
|
||||||
.Keys
|
|
||||||
.SelectMany(k => context.ModelState[k].Errors)
|
|
||||||
.Select(e => e.ErrorMessage)
|
|
||||||
.ToArray();
|
|
||||||
|
|
||||||
var json = new JsonErrorResponse
|
|
||||||
{
|
|
||||||
Messages = validationErrors
|
|
||||||
};
|
|
||||||
|
|
||||||
context.Result = new BadRequestObjectResult(json);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +1,10 @@
|
|||||||
using Microsoft.Extensions.Diagnostics.HealthChecks;
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
|
||||||
|
|
||||||
builder.AddServiceDefaults();
|
builder.AddServiceDefaults();
|
||||||
|
|
||||||
builder.Services.AddGrpc(options =>
|
builder.Services.AddGrpc();
|
||||||
{
|
builder.Services.AddControllers();
|
||||||
options.EnableDetailedErrors = true;
|
builder.Services.AddProblemDetails();
|
||||||
});
|
|
||||||
|
|
||||||
builder.Services.AddControllers(options =>
|
|
||||||
{
|
|
||||||
options.Filters.Add(typeof(HttpGlobalExceptionFilter));
|
|
||||||
options.Filters.Add(typeof(ValidateModelStateFilter));
|
|
||||||
});
|
|
||||||
|
|
||||||
builder.Services.AddRedis(builder.Configuration);
|
builder.Services.AddRedis(builder.Configuration);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user