매개 변수 사전에 널이 허용되지 않는 유형 'System.Int32'의 매개 변수 'imageWidth'에 대한 널 항목이 있습니다.

xort

ActionResult에 대한 ajax 호출을 수행하는 함수가 있으며 업로드 된 이미지의 base64 문자열을 이미지 크기에 대한 정보와 함께 다른 매개 변수와 함께 보냅니다. 데이터는 다른 것들 중에서 크기 조정을 위해 서버로 전송됩니다. ajax 호출은 다음과 같습니다.

     $.ajax({
            type: 'POST',
            data: {
                b64: data.data,
                imageWidth: data.imageWidth,
                imageHeight: data.imageHeight,
                imageOriginalWidth: data.imageOriginalWidth,
                imageOriginalHeight: data.imageOriginalHeight
            },
            
            url: '/Image/Resize',
            beforeSend: function () {
                //stuff
            },
            success: function (data) {
               //stuff
            },
            error: function (response) {
                //stuff
            }
        });

데이터 객체는 위에서 언급 한 모든 정보를 가져 오는 콜백 함수에서 검색됩니다. 이제 중단 점을 설정하고 개체에 실제로 값이 있는지 확인했습니다.

나는 또한 Fiddler에서 요청을 보았고 모든 것이 잘 보입니다. 이상한 점은 이것이 항상 발생하지는 않는다는 것입니다. 너무 큰 gif를 업로드하려고 할 때만 발생합니다. 파일이 약 2MB보다 크지 않으면 오류가 발생하지 않습니다. 명확히하기 위해 파일을 보내는 것이 아니라 base64 문자열 만 보냅니다.

문제가 b64문자열이 너무 크거나 다른 것인지는 모르겠지만 서버의 응답을 보면 이것이 전부입니다.

매개 변수 사전에 'System.Web.Mvc.ActionResult Resize (System.String, Int32, Int32, Int32, Int32)'메서드에 대해 nullable이 아닌 형식 'System.Int32'의 매개 변수 'imageWidth'에 대한 null 항목이 포함되어 있습니다.

ActionResult는 다음과 같습니다.

[HttpPost]
    public ActionResult Resize(String b64, int imageWidth, int imageHeight, int imageOriginalWidth, int imageOriginalHeight)
    {

      //.... 
    }

더 작은 다른 파일을 업로드하려고하면 모든 것이 잘 작동하며이 오류가 발생하지 않습니다. 이전에이 질문에 대한 답변을했다면 미안하지만 모든 곳을 살펴 보았지만 답변을 찾지 못했습니다. 나는 dataTypeajax 호출에서 변경을 시도 했으며 문자열 화를 시도하고 요청 헤더를 살펴 보았습니다.

내용 길이 : 4849982 내용 유형 : application / x-www-form-urlencoded; charset = UTF-8

내가 뭘 놓치고 있는지 모르겠다. 어떤 도움을 주시면 감사하겠습니다. 고마워요.

의뢰

b64 편집
imageWidth 906
imageHeight 509
imageOriginalWidth 500
imageOriginalHeight 281

xort

마침내 이것에 대한 해결책을 찾았습니다. 서버에 요청이있을 때 입력 스트림 버퍼링 임계 값의 기본 제한은 4MB입니다.

web.config파일 로 이동 하여 다음을 추가하기 만하면됩니다.

<configuration>
  <system.web>
    <httpRuntime maxRequestLength="xxx" />
  </system.web>
</configuration>

여기서 "xxx"는 원하는 크기 ( KB)입니다.

IIS 7+의 경우 다음을 추가해야합니다.

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="xxx" />
    </requestFiltering>
  </security>
</system.webServer>

기본값은 30MB 와 같습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관