asp.net 中的错误 500 内部服务器错误

Error 500 internal server error in asp.net

我正在编写一个 asp.net 应用程序,并尝试使用 jquery ajax 向 Web api2 控制器方法发出 post 请求。这样做会导致错误 500 内部服务器错误。 这是 jquery 代码

function reload(quantity, cartItemId) {
        $.ajax({
            url: "/api/user/UpdateCart",
            method: "POST",

            data: { quantity: quantity, cartItemId:cartItemId },
            success: function() {
              //  window.location.href = "/user/ViewCart";
            }

    });
    }

    function addItem(cartItemId) {
        var quantity = parseInt(document.getElementById("txt-box-" + cartItemId).value);
        quantity++;
        document.getElementById("txt-box-" + cartItemId).value = quantity;
        reload(quantity,cartItemId);
    }

在我的 web api 2 控制器中我有以下代码

    [AllowAnonymous]
    [HttpPost]
    public IHttpActionResult UpdateCart([FromBody]int quantity,[FromBody]int cartItemId)
    {
        var cartItemInDb = _unitOfWork.CartItemRepository.Read(cartItemId);
        cartItemInDb.Quantity = quantity;
        _unitOfWork.Complete();

        return Ok();
    }

我不认为 webapi 允许多个 frombody 参数。当我尝试使用您的代码时,出现此错误 - "Can't bind multiple parameters ('quantity' and 'cartItemId') to the request's content."。当存在绑定问题时,您的函数将不会在 visual studio 中被命中,因为它会从管道本身 return 中被命中。

此外,根据设计,您也可以拥有数量和 cartItemId 并更改您的代码,如下所示:

控制器代码:

    [AllowAnonymous]
    [HttpPost]
    [Route("api/user/UpdateCart")]
    public IHttpActionResult UpdateCart([FromBody]CartDetails cartDetails)
    {
        Console.WriteLine(cartDetails.cartItemId);
        Console.WriteLine(cartDetails.quantity); // Your code instead of Console.WriteLine();

        return Ok();
    }

class:

public class CartDetails
{
    public int quantity;
    public int cartItemId;
}

ajax 调用 javascript:

        $.ajax({

        url: "http://localhost:49946/api/user/UpdateCart",
        method: "POST",
        contentType: "application/json",
        data: JSON.stringify(
            {
                quantity: 12, cartItemId: 109
        }),
        success: function (result) {
            console.log("SUCESS: " + result);
        },
        error: function (data) {
            console.log("error: " + data.responseText);
        }
    });