使用 odata 返回服务器错误的 AJAX PUT 调用



我正在尝试使用 ODATA 对我的 Web API 进行基本的 AJAX PUT 调用。 这真的不应该那么难,我已经有了 POST 和 GET 开始工作,但 PUT 存在问题。 使用 Fiddler,它告诉我:"属性'Id'是对象关键信息的一部分,无法修改。 这是我在我的项目中的内容(与我在小提琴手中放入的内容相同):

$.ajax({
    url: url,
    type: "PUT",
    contentType: "application/json",
    dataType: "json",
    data: JSON.stringify({
        "Outcome": callResult,
        "CallTimes": timeTried,
    }),
    success: function (data) {
        alert("Saved to database!");
    },
    error: function (xhr, status, err) {
        alert("Failed to save: " + xhr + "n" + status + "n" + err);
    }
});

您不会将 Id 属性作为data(有效负载)的一部分发送。我猜这会导致服务器端的Id被反序列化为 null0 ,这很可能与您url中的实体键的值不匹配。因此,服务器上的代码认为您正在尝试修改 Id 的值。(有关将实体键与请求有效负载中的 Id 属性进行比较的Put方法的示例 ASP.NET 请参阅使用 Web API 2.2 创建 OData v4 终结点中的"更新实体"。

尝试将 Id 属性添加到data,如下所示:

data: JSON.stringify({
    "Id": key_value
    "Outcome": callResult,
    "CallTimes": timeTried,
})

其中key_value是用作url中的实体键的值。

最新更新