示例#1
0
        public async Task Invoke(HttpContext context)
        {
            try
            {
                await _next(context);
            }
            catch (Exception ex)
            {
                if (ex is EasyRbacException)
                {
                    context.Response.StatusCode = 400;
                }
                else
                {
                    context.Response.StatusCode = 500;
                }
                context.Response.ContentType = "application/json";
                var errObj = new ErroResponse()
                {
                    Message = ex.Message
                };

                var json = JsonConvert.SerializeObject(errObj, new JsonSerializerSettings()
                {
                    ContractResolver = new CamelCasePropertyNamesContractResolver()
                });
                //context.Response.ContentLength = json.Length;
                var body = Encoding.UTF8.GetBytes(json);
                context.Response.ContentLength = body.Length;
                await context.Response.WriteAsync(json, Encoding.UTF8);


                await ClearCacheHeaders(ex);
            }
        }
示例#2
0
 public void OnException(ExceptionContext context)
 {
     context.Result = new ObjectResult(ErroResponse.From(context.Exception))
     {
         StatusCode = 500
     };
 }
        public static IActionResult ProduceErrorResponse(ActionContext context)
        {
            var erros    = context.ModelState.GetMensagemErros();
            var response = new ErroResponse(mensagens: erros);

            return(new BadRequestObjectResult(response));
        }
 public IActionResult Incluir([FromForm] LivroUpload model)
 {
     if (ModelState.IsValid)
     {
         var livro = model.ToLivro();
         _repo.Incluir(livro);
         var uri = Url.Action("Recuperar", new { id = livro.Id });
         return(Created(uri, livro.ToApi())); //201
     }
     return(BadRequest(ErroResponse.FromModelStateError(ModelState)));
 }
示例#5
0
        /// <summary>Forbid behavior.</summary>
        /// <param name="properties">The <see cref="T:Microsoft.AspNetCore.Authentication.AuthenticationProperties" /> that contains the extra meta-data arriving with the authentication.</param>
        /// <returns>A task.</returns>
        public async Task ForbidAsync(AuthenticationProperties properties)
        {
            this.context.Response.StatusCode = 403;
            var error = new ErroResponse()
            {
                Message = "没有操作权限"
            };
            var bytes = Encoding.UTF8.GetBytes(error.ToJson());

            this.context.Response.ContentType = "application/json;charset=utf-8";
            await this.context.Response.Body.WriteAsync(bytes);
        }
 public IActionResult Alterar([FromForm] LivroUpload model)
 {
     if (ModelState.IsValid)
     {
         var livro = model.ToLivro();
         if (model.Capa == null)
         {
             livro.ImagemCapa = _repo.All
                                .Where(l => l.Id == livro.Id)
                                .Select(l => l.ImagemCapa)
                                .FirstOrDefault();
         }
         _repo.Alterar(livro);
         return(Ok()); //200
     }
     return(BadRequest(ErroResponse.FromModelStateError(ModelState)));
 }