Odata v4错误"不支持非开放类型的非类型值"

时间:2017-08-29 21:56:08

标签: rest odata httprequest

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

1 个答案:

答案 0 :(得分:13)

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

例如,给定数据模型:

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

    public string UserName { get; set; }
}

OData控制器的方法是:

public IHttpActionResult Post(User user)

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

{
    "UserId":"0",
    "UserName":"test",
    "UserPassword":"test"
}

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

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

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