Odata v4错误"在非打开类型中不支持无类型值"

vij*_*iel 13 rest httprequest odata

当我更新模型时,它会抛出"不支持非打开类型中的无类型值".它在更新之前正在工作.无法确定问题的根源.有任何想法吗.

Ram*_* A. 18

我之前遇到过这个错误,它是由传递数据模型上不存在的JSON对象的属性引起的.

例如,给定数据模型:

public class User
{
    public long UserId { get; set; }

    public string UserName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并且OData控制器具有以下方法:

public IHttpActionResult Post(User user)
Run Code Online (Sandbox Code Playgroud)

使用以下POST方法发送以下数据时:

{
    "UserId": "0",
    "UserName": "test",
    "UserPassword": "test"
}
Run Code Online (Sandbox Code Playgroud)

然后服务器将返回错误400,并带有以下响应:

{
    "error": {
        "code": "",
        "message": "The request is invalid.",
        "innererror": {
            "message": "user : Does not support untyped value in non-open type.\r\n",
            "type": "",
            "stacktrace": ""
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,如果UserPassword在此示例中从使用该POST方法发送的数据中删除属性,则不会发生错误.