具有contentType应用程序json的Ajax总是返回内部服务器错误

本文关键字:返回 内部 服务器 错误 Ajax contentType 应用程序 json 具有 | 更新日期: 2023-09-27 18:20:24

我有一个C#Web Api MVC 4应用程序在服务器上运行,为IOS应用程序提供服务。但是下面的方法总是返回ERR500。

$("#find_cep").click(function () {
    var version = "v1";
    $.ajax({
        url: version + "/Address/find_cep", /* URL que será chamada */
        type: 'POST', /* Tipo da requisição */
        contentType: 'application/json',
        data: {
            id: version,
            method: "find_cep",
            params: {
                address_cep: $("#address_cep").val()
            }
        }, /* dados que setão enviados via POST */
        cache: false,
        success: function (data) {
            alert(JSON.stringify(data, null, 2));
        },
        error: function (e) {
            console.dir(e);
            alert("Erro");
        },
    });
});

如果移除带有的线路

contentType: 'application/json',

该应用程序运行良好,但IOS开发团队表示,他们需要通过此contentType。我在找某种IIS配置,但没有找到。

有人能帮帮我吗?

编辑这是控制器代码。

注意LOG函数。日志不记录任何内容,所以,我想无法访问此代码。

[HttpPost]
public object find_cep([FromBody]PostBase<Address> viewmodel)
{
    Log.SetLog(viewmodel.Params);
    Log.ErrorLog("LEandro barbicha");
    var stopwatch = new Stopwatch();
    stopwatch.Start();
    try
    {
        var address = DBExecuteSql.GetAdressByCEP(viewmodel.Params.address_cep);
        if (address.address_city != null)
        {
            return ReturnExpcted.ReturnResultExpected(stopwatch, true, address, "", "0", viewmodel.id);
        }
        throw new Exception(String.Format("Nenhum endereço encontrado para o cep {0}", viewmodel.Params.address_cep));
    }
    catch (SqlException se)
    {
        Log.ErrorLog(se.Message);
        return ReturnExpcted.ReturnResultExpected(stopwatch, false, new object(), se.Message, se.ErrorCode.ToString(), viewmodel.id);
    }
    catch (Exception e)
    {
        Log.ErrorLog(e.Message); 
        return ReturnExpcted.ReturnResultExpected(stopwatch, false, new object(), e.Message, e.GetType().Name, viewmodel.id);
    }
}

具有contentType应用程序json的Ajax总是返回内部服务器错误

您正在设置json内容类型,但将数据发送为application/x-www-form-urlencoded
如果内容类型必须设置为application/json,那么您可能应该改为发送json。

$("#find_cep").click(function () {
    var version = "v1";
    $.ajax({
        url: version + "/Address/find_cep", /* URL que será chamada */
        type: 'POST', /* Tipo da requisição */
        contentType: 'application/json',
        data: JSON.stringify({
            id: version,
            method: "find_cep",
            params: {
                address_cep: $("#address_cep").val()
            }
        }), /* dados que setão enviados via POST */
        cache: false,
        success: function (data) {
            alert(JSON.stringify(data, null, 2));
        },
        error: function (e) {
            console.dir(e);
            alert("Erro");
        },
    });
});

我遇到了同样的问题。我使用以下方法修复了问题

$("#find_cep").click(function () {
var version = "v1";
$.ajax({
    url: version + "/Address/find_cep", /* URL que será chamada */
    type: 'POST', /* Tipo da requisição */
    contentType: 'application/json',
    data: {
        "id": version,
        "method": "find_cep",
        "params": {
            address_cep: $("#address_cep").val()
        }
    }, /* dados que setão enviados via POST */
    cache: false,
    success: function (data) {
        alert(JSON.stringify(data, null, 2));
    },
    error: function (e) {
        console.dir(e);
        alert("Erro");
    },
});

});

您可以看到参数应显示在"中。