Как передать строку с «запрещенным» ответом в .net core 2.2 web API - PullRequest
2 голосов
/ 01 апреля 2019

Работает нормально:

context.Result = new ForbidResult(); 

Но я хочу передать сообщение с «запрещенным» ответом вроде этого:

context.Result = new ForbidResult("Forbidden");

в ядре .net2. Веб-API. Но когда я пишу эту строку кода выше, я получаю

500 Внутренняя ошибка сервера

Итак, кто-нибудь помогает мне, как я могу выполнитьэта строка кода выше.

Пример кода

public class ClaimRequirementFilter : Microsoft.AspNetCore.Mvc.Filters.IAuthorizationFilter
{
    public void OnAuthorization(AuthorizationFilterContext context)
    {
          // working code
          context.Result = new ForbidResult();

          // Code with error (500 Internal Server Error)
          context.Result = new ForbidResult("Forbidden");
     }
 }

1 Ответ

5 голосов
/ 02 апреля 2019

Я создал эти два класса (1. CustomError и 2. CustomUnauthorizedResult) и использовал эти классы для обработки авторизации. Здесь вы можете передать динамическое сообщение и код состояния.

public class CustomError
{
    public string Error { get; }

    public CustomError(string message)
    {
        Error = message;
    }
}

public class CustomUnauthorizedResult : JsonResult
{
    public CustomUnauthorizedResult(string message, int statusCode) : base(new CustomError(message))
    {
        StatusCode = statusCode;
    }
}

public class ClaimRequirementFilter : Microsoft.AspNetCore.Mvc.Filters.IAuthorizationFilter
{
    public void OnAuthorization(AuthorizationFilterContext context)
    {
        context.Result = new CustomUnauthorizedResult("Authorization failed.", statusCode:403);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...