내 ASP.NET 4.5
. asmx web service
(분리되지 않은 웹 양식 프로젝트의 일부) xml string
사용자가 테이블 행을 두 번 클릭 할 때마다를 반환하여 해당 행에 대한 세부 정보를 데이터베이스에서 검색 할 수 있습니다.
이것은 그 자체로 잘 작동합니다.
응답이 다소 이상하지만 상황에서 (약 200K, 300K 문자 개수 내가 무엇을 볼 수에서), 웹 페이지는 JS 경고 팝업 (말 "오류")을 던질 것이고, 나는를 볼 수 있습니다 500 Internal Server Error
에 Chrome console
더, 세부. 그러나 웹 메서드 URL로 이동하여 수동으로 인수를 입력하면 문제없이 응답으로 즉각적이고 완전한 xml 문자열을 얻을 수 있습니다 .
다음 (동기) js / ajax를 사용하여 웹 메서드를 호출하고 있습니다.
function GetDetailsFromTableRow(userID, country, rowName) {
var url = "http://MyServer/MyWebService.asmx/MyWebMethod",
result = '';
$.ajax({
type: "POST",
async: false,
url: url,
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({
'userID': userID,
'country': country,
'rowName': rowName
}),
success: function (response) {
result = response.d;
},
error: function (x, t, m) {
if (t === "timeout") {
alert('timeout!');
}
else {
alert(t); //<- this gets thrown apparently
}
}
});
return result;
}
이 js에서이 함수가 실제로 타임 아웃을 던지지 않는지 확인할 수 있으므로 제거 할 수 있다고 확신합니다.
또한 몇 백 킬로바이트에 불과하지만 여전히 데이터에 대한 응답을 청크 할 필요가 없다고 생각합니다 . 제가 틀렸을 수도 있습니다.
또한 웹 메서드를 호출하는 더 나은 방법이 비동기식이라는 것을 잘 알고 있지만 다른 (실질적인) 데이터를 이미 (비동기 및 동기화 방식으로) 호출하는 데 성공하고 있으므로 이유 에 대한 답변을 찾고 있습니다. 이것은 전체 이야기의 일부를 분명히 이해하지 못하기 때문에 특정 크기 이상의 응답에는 작동하지 않습니다 (나는 80kB이고 일부는 200 + kB, 전자는 그렇지 않습니다).
완전성을 위해 : async=true
웹 서비스를 호출하면 똑같은 동작이 발생합니다.
IE에서 js를 디버깅하면 다음 오류가 발생했습니다.
JSON JavaScriptSerializer를 사용하여 직렬화 또는 역 직렬화하는 동안 오류가 발생했습니다. 문자열 길이가 maxJsonLength 속성에 설정된 값을 초과합니다.
이 답변 (및 수정 주석) 에서 언급했듯이 다음 항목을 추가 web.config
하면 maxJsonLength
값 이 증가합니다 int.MaxValue
.
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="2147483644"></jsonSerialization>
</webServices>
</scripting>
</system.web.extensions>
후속 테스트는 모두 성공적입니다. 문제가 해결되었습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다