jquery - Ajax 邮政 : "Server encountered an error processing the request"

标签 jquery json ajax wcf-rest

我有一个 jQuery Mobile 应用程序与 WCF REST 服务进行通信。我对 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;
    }

日志文件从未被写入,所以我知道它甚至没有到达该方法。

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

谢谢

最佳答案

终于明白了。问题出在这行:

内容类型:'应用程序/json;字符集=utf-8',

我将其从 ajax 调用中取出,然后能够在日志文件中看到进度。然后发现其余服务中创建pdf的问题。 REST 服务修复后,该应用程序就可以正常工作了。

我最初将其放入,因为我看到许多解决方案都说必须包含该行。没想到拿出来测试一下。

关于jquery - Ajax 邮政 : "Server encountered an error processing the request",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32953529/

相关文章:

javascript - 页面加载时发生空请求时如何防止 500 GET 错误?

javascript - 将 php 数组传递给 Ajax/jQuery

jquery - 可以使用 jQuery 更改元素的宽度来修改另一个元素的字体大小吗?

ios - 通过 Segue 将数据传递给新的 ViewController

java - 如何指定 Jackson 仅使用字段 - 最好是全局的

javascript - 如何在 window.location 之前显示 msg 2 秒

jquery - 使用jquery解析xml文件中元素的未知属性

jquery - 检索 ASP.NET 中动态创建的表的单元格值

javascript - HTML 表单提交至 Google 日历 : Uncaught TypeError, 由于属性值非法而失败:1

python - 使用 Python 脚本通过运行 csv 文件数据来创建字典列表