よし、Prototype ライブラリを使用してページ ビハインドで Web メソッドへの AJAX 呼び出しを行い、データを取得する .NET アプリケーションがあります。このアプリケーションは、かなり長い間稼働しており、問題はありません。最近、新しいユーザーがアプリケーションを使い始め、いくつかの奇妙な問題が発生しました。
基本的に、しばらくの間はアプリケーションを問題なく使用できますが、AJAX 呼び出しで Web メソッドにパラメーターが欠落していることを示すエラーがスローされ始めます。エラーは次のとおりです。
System.InvalidOperationException - Unable to perform the requested action: Invalid web service call, missing value for parameter: 'fleet'.
at System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary'2 parameters)
at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary'2 parameters)
AT SYSTEM.WEB.SCRIPT.SERVICES.RESTHANDLER.INVOKEMETHOD(HTTPCONTEXT CONTEXT, WEBSERVICEMETHODDATA METHODDATA, IDICTIONARY`2 RAWPARAMS)
at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)
めちゃくちゃになるのは 1 つの呼び出しだけではなく、任意の ajax 呼び出しであり、常に「行方不明」と呼ばれる webmethod の最初のパラメーターであるように見えます。投稿データが何らかの形で戻ってこないのではないかと思いますか? (関連?: JQuery Ajax post パラメータが IE で送信されないことがあります)。
この問題を再現することはできませんでしたし、他のユーザーも経験していません。これにより、問題を引き起こしているのはこのユーザー システムに固有のものであると思われます。残念ながら、彼らはかなり重要なユーザーなので、この問題を解決する必要があります。ユーザーはブラウザとして IE8 を使用しています。プロトタイプを使用して ajax 呼び出しを行うコードは次のとおりです。
function gAjax(url, params, onSuccess, onError, onException, onComplete) {
new Ajax.Request(url,
{
method:'post', //Post
contentType:"application/json; charset=utf-8", //As JSON
postBody:Object.toJSON(params), //Post Body is JSON string
sanitizeJSON:true, //Sanitize the JSON
onComplete:onComplete, //Set user on complete
onSuccess:onSuccess, //Set user on success
onFailure:onError, //Set user on error
onException:onException //Set user on exception
});
}
onComplete、onSuccess、onError、onException は関数コールバックです。params は次のようなオブジェクトです。
{'フリート':'フリートヴァル','ビン':1234}
Url は、Bin.aspx/LoadBinInfo などのメソッドです。このメソッドは、バックエンドで次のように定義されています。
<System.Web.Services.WebMethod()> _
Public Shared Function LoadBinInfo(ByVal fleet As String, ByVal bin As Integer) As Dictionary(Of String, Object)
'.....
'Returns a dictionary of info
End Function
何が起こっているのかについて誰かが何か考えを持っているなら、私はどんな意見でも大歓迎です! 私の調査では、考えられる原因につながる情報が見つからないようです。繰り返しますが、これはこの 1 人のユーザーにのみ発生するように思われるため、おそらく彼の側のブラウザー設定です (どのような設定が考えられますか?)。しかし、それでも彼にとっても散発的ですが、一度発生し始めると、彼がブラウザを閉じて最初からやり直すまで、それは絶えず発生します.