1

그래서이 말은 나를 괴롭 히고 있습니다. 내 웹 API에 POST 요청을 보내는 간단한 작업을하고 있습니다. 엔드 포인트는 다음과 같이 설정 :C# .net 핵심 웹 API 게시 매개 변수 항상 null

[HttpPost] 
[Route("locations")] 
public async Task<IActionResult> PostLocations([FromBody]IEnumerable<Location>locations) 

다음과 같이 내가 전화를 만들고있어 :

http://localhost:60254/api/Fetch/locations 
With the body 
{ 
    "Locations": [ 
    { 
     "LocationId": "111", 
     "ProductId": 110, 
     "Sku": "11131-LJK" 
    } 
    ] 
} 

And header: content-type: application/json 

을 이제 다시는 상자와이 빌어 먹을에서 작동합니다 아주 간단한 일이다, 프레임 워크의 변화는 모든 것을 엉망으로 만들고 있습니다. 내가 HttpContext를 얻을 내가 몸이 제대로 전송되는 것을 볼 수 있습니다 직접

using (StreamReader reader = new StreamReader(HttpContext.Request.Body, Encoding.UTF8)) 
    { 
     string body = reader.ReadToEnd(); 
    } 

몸 스트림을 읽으면

지금, 나는 내가 원하는대로로 변환 할 수있는 슈퍼 잘 형성 JSON있다. 문제는이 끝점이 작동하지 않는다는 것입니다.

웹 api 프로젝트 템플릿이 작동하기 위해 어떤 구성을 추가하지 않고 있습니까?

+0

이 질문은 asp.net core 또는 asp.net web api입니까? –

답변

4

페이로드는 Location의 목록이 아니고 Locations 속성의 목록 인 개체입니다. 대신

{ 
    "Locations": [ 
    { 
     "LocationId": "111", 
     "ProductId": 110, 
     "Sku": "11131-LJK" 
    } 
] 
} 

사용

[ 
    { 
    "LocationId": "111", 
    "ProductId": 110, 
    "Sku": "11131-LJK" 
    } 
] 
+0

제가 ' 으로 바꾸려고 [ { "LocationId": "111" "제품 ID"110 "SKU": "11131-LJK" } ] ' 하고 또한 케이 – Ioni

+0

글쎄, 이제 제대로 작동하지 않을 때 왜 작동하는지 알 수 없습니다. Murphy 's law 나는 추측합니다. 감사합니다. – Ioni

0

통과, JSON 개체를 통과하지 마십시오 하나도 캐릭터 라인 :

다른 사람을 위해
var location = [ 
{ 
"LocationId": "111", 
"ProductId": 110, 
"Sku": "11131-LJK" 
    } 
] 
var dataToPost = JSON.stringify(location); 
0

... 확인하여 [FromBody] 모델 및 모든 자식 클래스에는 매개 변수없는 생성자가 있습니다.