Ajax POST:"服务器遇到处理请求的错误"

时间:2015-10-05 16:35:49

标签: jquery json ajax wcf-rest

我有一个与WCF REST服务通信的jQuery Mobile应用程序。我对REST服务的大部分调用都是GET。但是,一个函数使用带有JSON数据的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;
    }

永远不会写入日志文件,因此我知道它甚至没有达到该方法。

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

由于

1 个答案:

答案 0 :(得分:0)

终于弄明白了。问题在于:

contentType:'application / json;字符集= UTF-8' ,

我从ajax调用中取出了它,然后能够看到日志文件中的进度。然后在休息服务中发现了pdf创建的问题。修复REST服务后,该应用就像魅力一样。

我最初把它放进去,因为我看过许多解决方案,说必须包含该行。没想过要把它拿出去测试。