Использование Swagger с ASP.NET Boilerplate возвращает 400 неверных запросов с операциями POST, PUT и Delete.Журналы указывают на проблему с токеном против подделки - PullRequest
0 голосов
/ 12 сентября 2018

Я новичок в ASP.NET Boilerplate, и я попытался создать свою первую Службу приложений, используя простой объект.

Вот объект:

public class Category : Entity
{
    public string Name { get; set; }
    public string ImageUrl { get; set; }
}

Доменная служба:

public class CategoryManager : DomainService, ICategoryManager
{
    private readonly IRepository<Category> _categoryRepository;

    public CategoryManager(IRepository<Category> categoryRepository)
    {
        _categoryRepository = categoryRepository;
    }
    public IEnumerable<Category> GetAll()
    {
        return _categoryRepository.GetAllList();
    }

    public Category GetById(int id)
    {
        return _categoryRepository.Get(id);
    }

    public Category Add(Category category)
    {
        return _categoryRepository.Insert(category);
    }


}

Служба приложений:

public class CategoryAppService : ApplicationService, ICategoryAppService
{
    private readonly ICategoryManager _categoryManager;

    public CategoryAppService(ICategoryManager categoryManager)
    {
        _categoryManager = categoryManager;
    }


    public ListResultDto<CategoryDto> GetAll(GetAllCategoriesInput input)
    {
        var categories = _categoryManager.GetAll();

        return new ListResultDto<CategoryDto>(ObjectMapper.Map<List<CategoryDto>>(categories));
    }

    public CategoryDto GetById(GetCategoryByIdInput input)
    {
        var category = _categoryManager.GetById(input.Id);
        return ObjectMapper.Map<CategoryDto>(category);
    }

    public CategoryDto Create([FromBody]CategoryDto input)
    {
        var category = _categoryManager.Add(ObjectMapper.Map<Category>(input));

        return ObjectMapper.Map<CategoryDto>(category);
    }


}

Когда я пытаюсь получить доступ к конечным точкам Get с помощью сваггера, все работает как положено.Но когда я пытаюсь получить доступ к другим конечным точкам, он возвращает недокументированную ошибку 400.

Example of Invoking

Example response

Вот некоторая информация, которую я нашел в окне вывода о запросе, сделанном с помощью чванства:

    SampleService.Web.Mvc> info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
SampleService.Web.Mvc>       Request starting HTTP/1.1 POST http://localhost:62114/api/services/app/Category/Create application/json 86
SampleService.Web.Mvc> info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1]
SampleService.Web.Mvc>       Route matched with {area = "app", action = "Create", controller = "Category"}. Executing action SampleService.Categories.AppServices.CategoryAppService.Create (SampleService.Application)
SampleService.Web.Mvc> info: Abp.AspNetCore.Mvc.Antiforgery.AbpAutoValidateAntiforgeryTokenAuthorizationFilter[1]
SampleService.Web.Mvc>       Antiforgery token validation failed. The required antiforgery header value "X-XSRF-TOKEN" is not present.
SampleService.Web.Mvc> Microsoft.AspNetCore.Antiforgery.AntiforgeryValidationException: The required antiforgery header value "X-XSRF-TOKEN" is not present.
SampleService.Web.Mvc>    at Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery.ValidateRequestAsync(HttpContext httpContext)
SampleService.Web.Mvc>    at Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.ValidateAntiforgeryTokenAuthorizationFilter.OnAuthorizationAsync(AuthorizationFilterContext context)
SampleService.Web.Mvc> info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[3]
SampleService.Web.Mvc>       Authorization failed for the request at filter 'Abp.AspNetCore.Mvc.Antiforgery.AbpAutoValidateAntiforgeryTokenAuthorizationFilter'.
SampleService.Web.Mvc> info: Microsoft.AspNetCore.Mvc.StatusCodeResult[1]
SampleService.Web.Mvc>       Executing HttpStatusCodeResult, setting HTTP status code 400
SampleService.Web.Mvc> info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[2]
SampleService.Web.Mvc>       Executed action SampleService.Categories.AppServices.CategoryAppService.Create (SampleService.Application) in 0.6744ms
SampleService.Web.Mvc> info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
SampleService.Web.Mvc>       Request finished in 9.4144ms 400 
SampleService.Web.Mvc> info: Microsoft.AspNetCore.Server.Kestrel[32]
SampleService.Web.Mvc>       Connection id "0HLGPB44TBNED", Request id "0HLGPB44TBNED:00000001": the application completed without reading the entire request body.

Пожалуйста, помогите, если можете.

Заранее спасибо.

...