我在服务器上运行C#Web Api MVC 4应用程序来为IOS应用程序提供服务。 但是下面的方法总是返回ERR 500。
$("#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功能。日志DOESNT会记录任何内容,因此,我猜这段代码无法访问。
[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);
}
}
答案 0 :(得分:0)
您正在设置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");
},
});
});
答案 1 :(得分:0)
我遇到了同样的问题我使用以下方法修复了
$("#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");
},
});
});
您可以看到参数应显示在“”。
中