2017-03-03 3 views
0

휴대 기기에서 닷넷 웹 API로 이미지를 게시하려고하는 프로젝트 (예 배)를 유지하려고합니다.Web Api의 Base64 문자열 배열 처리

api와 휴대 기기 간의 기본 콘텐츠는 application/json입니다.

public async Task<HttpResponseMessage> PostExpertiseForm(List<string> images){}

이 게시하고이 파일 (images를) base64로 문자열을 작성하려고하는이 방법의 실제 방법이다.

하지만 문제는이 api를 처음 호출했을 때 웹 API가 내 base64 문자열로 images을 바인딩하지만 다음 요청 (첫 번째 요청과 동일한 요청)은 모두 null에 바인딩된다는 것입니다.

좀 Google 검색을했고 그것에 대해 문질러서는 요청 크기의 문제이고 나는 Web.config이 라인을 추가 :

<httpRuntime targetFramework="4.6" maxRequestLength="2147483647" />

<requestLimits maxAllowedContentLength="2147483648" />

<jsonSerialization maxJsonLength="2147483644">

그냥 .. 일.

실제 문제는 무엇입니까? 첫 요청이 왜 효과가 있었습니까?

귀하의 조언에 감사드립니다.

답변

0

문제는 json 크기가 아니 었습니다. 이 내가 그 질문에 why-is-the-body-of-web-api-request-read-once

을 발견 웹 API의 매개 변수가 포스트 방법에 대한 약간의 검색 후이 라인 var request=await Request.ReadAsStringAsync();

을 보았다 로그 요청 방법의 모든 응답과 요청을 로깅을위한 메커니즘이었다 그리고 나는 시도 것을 깨달았다 요청 본문을 두 번 읽고 데드 록을 일으켰습니다.

로깅 논리가 변경되었습니다. 문제는 사라졌습니다.