2015-10-05 63 views
3

我有一个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因为我知道它甚至没有达到这个方法。

任何人都有我可以做的事情,或者看看可能会有所帮助,我非常感谢。

谢谢

回答

0

终于明白了这一点。问题是这样的:

contentType:'application/json; charset = utf-8',

我把它从ajax调用中取出,然后能够看到日志文件的进度。然后发现在其他服务中创建PDF的问题。一旦REST服务被修复,该应用就像一个魅力。

我原本把它放在里面,因为我看到很多说这行必须包含的解决方案。没有想过要拿出来测试。

相关问题