我有一個jQuery Mobile應用程序與WCF REST服務進行通信。我對REST服務的大部分調用都是GET。但是,一個函數使用POST和JSON數據。Ajax POST:「服務器遇到錯誤處理請求」
POST在我們的開發服務器上完美工作,所以我相當肯定它不是我的代碼。當我將它轉移到生產環境時,它不再起作用。我已經在REST服務中包含了一些日誌記錄,所以我有一個很好的想法,在移動應用程序通信時調用了什麼方法。所有GET都順利通過,記錄使用了哪種方法。但是POST方法甚至不會被調用。
當我發送POST請求時,我得到「服務器在處理請求時遇到錯誤,請參閱服務器日誌以獲取更多詳細信息。」我已經查看了所有通過服務器上的事件查看器,並找不到任何與此有關的消息。我們還查看了防火牆日誌,但沒有看到任何被阻止的內容。
我不知道是什麼導致了錯誤。
這裏是我的Ajax調用:
var JSONObject = {
"customerID": customerID
, "keyserialNumber": serialNumber
, "issuedToName": newKeyHolderName
, "userID": loggedInUserID
, "keyIssuedUserID": newKeyHolderUserID
, "signature": signature
, "userEmail": loggedInUserEmail
, "ccEmails": ccEmails
};
$.ajax({
url: baseUrl + 'UpdateKeyReceipt',
type: 'POST',
data: JSON.stringify(JSONObject),
error: function(e){
console.log(e);
},
dataType: 'JSON',
contentType: 'application/json; charset=utf-8',
success: function (data) {
ClearLookupData();
$('#popKeyReceipt').popup('close');
$.mobile.loading('hide');
}
});
$.mobile.loading('hide');
REST服務看起來是這樣的:
接口:所謂
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.WrappedRequest,
UriTemplate = "UpdateKeyReceipt")]
string KeyReceiptData(Stream data);
方法:
public string KeyReceiptData(Stream data)
{
string logFile = @"\\ikraid\Clients\InstaKey\Logs\IKRestLog.txt";
using (StreamWriter sw = File.AppendText(logFile))
{
sw.WriteLine("KeyReceiptData: ");
}
StreamReader reader = new StreamReader(data);
string result = reader.ReadToEnd();
reader.Close();
reader.Dispose();
UpdateKeyReceipt keyData = JsonConvert.DeserializeObject<UpdateKeyReceipt>(result);
Helper.UpdateKeyReceipt(keyData.CustomerID.ToString(), keyData.KeySerialNumber.ToString(), keyData.IssuedToName.ToString(),
keyData.UserID.ToString(), keyData.KeyIssuedUserID.ToString(), keyData.Signature.ToString(),
keyData.UserEmail.ToString(), keyData.CCEmails.ToString());
return "Received: " + result;
}
日誌文件從來沒有是w因爲我知道它甚至沒有達到這個方法。
任何人都有我可以做的事情,或者看看可能會有所幫助,我非常感謝。
謝謝