我有一個HTML/Javascript頁面,正在對.NET ajax處理程序(.ASHX)進行jQuery ajax調用。在第一次調用時,我在數據對象中傳遞的參數是存在且正確的。但在隨後的調用中,它們是NULL。IHttpHandler Request.Params爲什麼在第一次調用時正確,但在第二次調用時是否爲NULL?
的JavaScript設置:
var data = {
requestType: "RecentMXMeetings",
meetingType: "Maintenance",
baseDate: "6/15/2016",
daysPast: 90,
daysFuture: 30
}
$.ajax({
type: "GET",
url: "ajaxHandler.ashx",
dataType: "text",
cache: false,
data: data,
success: function (result) {
alert("Success: " + result.responseText);
},
error: function (result) {
alert("Error: " + result.responseText);
},
fail: function (result) {
alert("Error - Fail: " + result.responseText);
},
always: function (result) {
alert("Always: " + result.responseText);
}
});
處理程序代碼(ashx的):
public class ajaxHandler : IHttpHandler {
public void ProcessRequest(HttpContext context) {
string retJSON = "NODATA";
var x = context.Request.Params["requestType"];
if (!String.IsNullOrEmpty(x)) {
switch (x) {
case "RecentMXMeetings":
retJSON = SerialiseRecentMeetings(context);
break;
// other cases...
}
}
context.Response.ContentType = "text/plain";
context.Response.Write(retJSON);
}
public bool IsReusable {
get {
return false;
}
}
//
// SerialiseRecentMeetings() and other methods...
//
}
我加上 「var x = context....
」 斷點。第一次運行時,x ==「RecentMXMeetings」。在第二個和後續運行中,x == null。
這裏是我已經能夠確定在調試它:
如果我更改從AJAX類型「GET」,以「POST」,並運行它,然後改回爲「GET」,並運行它再次,數據對象參數正確返回一次,然後再次調用NULL。在「GET」和「POST」之間來回切換可解決一次呼叫的問題。
問題是間歇性的。有時在四或五次運行後,x會返回「RecentMXMeetings」,然後再次返回null。
在兩次運行之間等待一段時間有時會「重置」它,並且對於該運行將是有利的。然後再回到空。
這是我第一次進入C#中的ajax處理程序,所以我在這方面很新手。
這是緩存問題嗎?這裏是否有異步問題?我可能沒有正確使用或處置HttpHandler?
你可以使用'POST'而不是'GET'嗎? –
嘗試使用fiddler查看您的網絡流量並查看HttpHandler是否實際上每次都獲取查詢字符串。 – Sal