2017-05-19 8 views
0

요청이 .NET Core Web API의 작업에 부딪치기 전에 비즈니스 로직을 처리하기 위해 사용자 정의 ActionFilterAttribute를 작성하고 있습니다. (Core v1.1) 처리기가 OnActionExecuting에 의해 성공적으로 중단되었지만 요청 본문에서 오는 JSON 형식으로 전송 된 데이터를 추출 할 수 없습니다.ActionFilterAttribute 내 .NET Core Web API의 요청 본문에서 JSON 데이터 가져 오기

ActionExecutingContext 스트림 본문 (비어 있음)을 읽거나, Form 속성에 액세스하는 등의 방법으로 시도해 보았습니다.하지만 JSON에서는 작동하지 않으므로 작동하지 않습니다.

여기 내 ActionFilter 코드는 비어 있습니다. 문제는 기본적으로 데이터를 추출해야하므로 추가 코드가 적합하지 않을 수 있기 때문입니다.

public class AccountRestrictionAttribute : ActionFilterAttribute 
{ 
    public override async void OnActionExecuting(ActionExecutingContext context) 
    {  
    } 
} 

답변

0

대답 신용이 rynowak 간다, 나는 당신이 폼 데이터 또는 [FromBody] 매개 변수가 있다면, 우리는 그것을 읽을 이미 한 있도록 ModelBinding 액션 필터하기 전에 실행 여기 https://github.com/aspnet/Mvc/issues/5260

을 발견했다.

예, 작업 필터 안에 있으면 context.ActionArguments에 생성 된 모든 모델 개체가 포함됩니다. 따라서 가지고있는 경우 :

public IActionResult Edit(int id, [FromBody] Widget widget) { } 

그런 다음 context.ActionArguments [ "widget"]은 위젯 객체를 반환합니다. 일반적인 방법으로이 작업을 수행하려는 경우 컨텍스트를 확인하십시오 .ActionDescriptor.Parameters - 여기에는 모든 매개 변수 정의 및 메타 데이터가 포함됩니다.

+0

예, 조금 더 일찍 동일한 링크를 찾았지만 어쨌든 고맙습니다. – user2761172