jQuery(v 1.7.2)を使用してASP.NET(v 2.0.50727)Webサービスに対してajax呼び出しを行うモバイルデバイス用のWebサイトを開発しています。
呼び出しは約95%の時間で正しく機能しますが、ランダムに失敗し、500の内部サーバーエラーが返されます。コードの最初の行が実行される前に、サーバー側で失敗します(最初の行はイベントログに書き込みます)。
私が覚えているデスクトップブラウザを使用して呼び出しが失敗するのを見たことがありませんが、iPadを使用すると十分に失敗するのを見ました。追加した
<browserCaps userAgentCacheKeyLength="256">
Webサービスのweb.configファイルに追加しましたが、それは役に立ちませんでした。
javascript:
$.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");
});
Webサービスに渡されるデータの例:
'{"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);
}
私が少し助けてくれたのは、Webサービスからの応答ヘッダーに「jsonerror:true」が含まれているために呼び出しが失敗したときだけですが、ランダムに失敗する理由を特定することはできませんでした。
どんな助けでも大歓迎です!