WebApi 2 - Json请求挂起

本文关键字:请求 挂起 Json WebApi | 更新日期: 2023-09-27 18:06:54

当我从ajax调用一个webapi时,如果我返回的不是简单的字符串或int,则请求仍在等待中。

here my javascript:

var endPoint = "/api/services/attivita/set";
$.ajax({
    url: endPoint,
    data: JSON.stringify(
        {
        'id': attivita.IDTipoAttivita,
        'descrizione': $('#Descrizione').val()
        }
    ),
    dataType: 'json',
    contentType: "application/json;charset=utf-8",
    processData: false,
    type: 'post',
    success: function (data) {
        console.log('ok');
    },
    error: function (data) {
        console.log('ko');
    }
});

和这里的webapi代码

    [System.Web.Http.HttpGet]
    [System.Web.Http.HttpPost]
    [System.Web.Http.Route("api/services/attivita/set")]
    public TipoAttivita SetAttivita([FromBody] dynamic obj)
    {
        var id = (int)obj.id;
        var descrizione = obj.descrizione.ToString();
        var nuovo = id == -1;
        var attivita = new TipoAttivita()
        //do stuff of attivita object
        this.CurrentDb.TipoAttivita.Add(attivita);
        this.CurrentDb.SaveChanges();
        return (attivita);
    }

如果我在函数的末尾改为"public int...."answers"return(1);"一切正常。

在WebApiConfig.cs中我有这个

var jsonFormatter = new JsonMediaTypeFormatter
        {
            SerializerSettings = {ReferenceLoopHandling = ReferenceLoopHandling.Ignore}
        };
        jsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));
        config.Formatters.Clear();
        config.Formatters.Add(jsonFormatter);

任何想法?谢谢大家

WebApi 2 - Json请求挂起

尝试将返回类型更改为IHttpActionResult并返回Ok(attivita)