ASP.NET (v 2.0.50727) 웹 서비스에 jQuery (v 1.7.2)를 사용하여 ajax 호출을하는 모바일 장치 용 웹 사이트를 개발하고 있습니다. .ASP.NET 웹 서비스에 대한 jQuery ajax POST 호출이 무작위로 실패합니다.
호출은 95 %의 시간 동안 올바르게 작동하지만 무작위로 실패하고 500 개의 내부 서버 오류가 반환됩니다. 첫 번째 코드 줄이 실행되기 전에 서버 측에서 실패합니다 (첫 번째 줄은 이벤트 로그에 기록됩니다).
내가 기억하는 데스크톱 브라우저를 사용하여 전화가 끊어지는 것을 보지 못했지만, iPad를 사용하여 통화가 실패한 것으로 나타났습니다. 웹 서비스의 web.config 파일에
<browserCaps userAgentCacheKeyLength="256">
을 추가했으나 도움이되지 않았습니다.
자바 스크립트 :
이'{"formURL":"fileName.xml", "rowNumber":"1"}'
C#을가
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string getImage(string formURL, string rowNumber) {
log("Retrieving image of form " + formURL);
string image = "";
string username = /*retrieve username*/;
string password = /*retrieve password*/;
if (username != null && username != "") {
image = /*code to retrieve the image*/;
}
return image;
}
private void log(string message) {
EvLog.WriteToEventLog(DateTime.Now.ToString("MM:dd:yyyy H:mm:ss:fff") + Environment.NewLine + message, 10);
}
약간 도움이되었습니다 내가 찾은 유일한 것은,이다 : 웹 서비스에 전달
$.ajax({
type: "POST",
url: serverURL + "/getImage",
data: '{"formURL":"' + url + '", "rowNumber":"'+rowNumber+'"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg,textStatus, jqXHR) {
...
}, error: function(xhr, ajaxOptions, thrownError) {
...
}
}).done(function(){
console.log("getImage call is done");
});
예 데이터 웹 서비스의 응답 헤더에 "jsonerror : true"가 포함되어 있기 때문에 호출이 실패한 경우 왜 무작위로 실패 할지를 정확히 지적 할 수 있습니다.
도움을 주시면 감사하겠습니다.
데이터를 보내지 못하면 어떻게 든 잘못된 JSON이 포함될 수 있습니까?파일 이름이나 rownumber에 잘못된 문자가있을 수 있습니까? 'var data ='{ "formURL": "+ url + '", "rowNumber": "'+ rowNumber + '"}' '다음에'console.log (data)'를 추가하십시오. ajax 호출 전에 브라우저 디버깅 도구의 conole 출력 창에서 보낼 데이터를 표시해야합니다. Debuggin 도구는 Chrome과 IE (F12 핫키)에 기본 제공되며 FF의 경우 FireBug 애드온을 istall해야합니다. – Nope
아래의 답변 외에도 ajax 호출에서 'traditional : true'라는 또 다른 설정을 시도해 볼 수 있습니다. JSON을 게시하기 위해 작동하는 것으로 판명되었지만 ASP.NET MVC3을 사용하고 있지만 여전히 가치가 있습니다. 'traditional : true'는 "얕은"직렬화를 일으킬 것입니다. 자세한 내용은 다음을 참조하십시오. http://api.jquery.com/jQuery.ajax/ 및 http://api.jquery.com/jQuery.param/ – Nope
ajax 호출을하기 전에 로그 문이 있습니다. 그리고 동일한 데이터 세트 (동일한 데이터를 사용하는 다중 호출)에서 무작위로 실패합니다. – user1324855