Ajax POST: "Server encountered an error processing the request"
Ajax POST: "Server encountered an error processing the request"
我有一个 jQuery 移动应用程序与 WCF REST 服务通信。我对 REST 服务的大部分调用都是 GET。但是,一个函数使用 POST 和 JSON 数据。
POST 在我们的开发服务器上运行完美,所以我很确定这不是我的代码。当我将其移至生产环境时,它不再起作用了。我在 REST 服务中包含了一些日志记录,因此我很清楚在移动应用程序通信时调用的是什么方法。所有 GET 都顺利通过,记录使用了哪种方法。但是 POST 方法甚至没有被调用。
当我发送 POST 请求时,我得到 "The server encountered an error processing the request. See server logs for more details." 我已经查看了服务器上的所有事件查看器,但找不到任何与此相关的消息。我们还查看了防火墙日志,但我没有看到任何内容被阻止。
我不知道是什么导致了错误。
这是我的 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;
}
日志文件从未被写入,所以我知道它甚至没有到达方法。
任何人有任何我可以做的事情,或者看看可能会有所帮助,我将不胜感激。
谢谢
终于明白了。问题是行:
内容类型:'application/json; charset=utf-8',
我从 ajax 调用中删除了它,然后能够在日志文件中看到进度。然后在rest服务中发现pdf创建有问题。一旦修复了 REST 服务,该应用程序就可以正常运行了。
我最初将其放入,因为我看到许多解决方案都说必须包括该行。没想到拿出来测试一下。
我有一个 jQuery 移动应用程序与 WCF REST 服务通信。我对 REST 服务的大部分调用都是 GET。但是,一个函数使用 POST 和 JSON 数据。
POST 在我们的开发服务器上运行完美,所以我很确定这不是我的代码。当我将其移至生产环境时,它不再起作用了。我在 REST 服务中包含了一些日志记录,因此我很清楚在移动应用程序通信时调用的是什么方法。所有 GET 都顺利通过,记录使用了哪种方法。但是 POST 方法甚至没有被调用。
当我发送 POST 请求时,我得到 "The server encountered an error processing the request. See server logs for more details." 我已经查看了服务器上的所有事件查看器,但找不到任何与此相关的消息。我们还查看了防火墙日志,但我没有看到任何内容被阻止。
我不知道是什么导致了错误。
这是我的 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;
}
日志文件从未被写入,所以我知道它甚至没有到达方法。
任何人有任何我可以做的事情,或者看看可能会有所帮助,我将不胜感激。
谢谢
终于明白了。问题是行:
内容类型:'application/json; charset=utf-8',
我从 ajax 调用中删除了它,然后能够在日志文件中看到进度。然后在rest服务中发现pdf创建有问题。一旦修复了 REST 服务,该应用程序就可以正常运行了。
我最初将其放入,因为我看到许多解决方案都说必须包括该行。没想到拿出来测试一下。