c# - .NET WebAPI 中的 POST 对象

标签 c# asp.net-web-api

我有一个关于 WebApi 的小问题。

问题: 如果我想使用 JSON 发布模型,我可以添加任意数量的成员,只要存在模型中定义的成员即可。

问题: 如果我的 Json 对象中存在未定义的成员,我该如何触发异常。如果没有自定义 JsonConverter,这是否可以实现? 我正在寻找的是通用解决方案,而不是针对每个不同模型的转换。

示例:

型号:

public class Person
{
    [Required]
    public string Name { get; set; }
}

API Controller :

public class PersonController : ApiController
{
    public HttpResponseMessage Post(Person person)
    {
        if (person != null)
        {
            if (ModelState.IsValid)
            {
                //do some stuff
                return new HttpResponseMessage(HttpStatusCode.OK);
            }
        }
        return new HttpResponseMessage(HttpStatusCode.BadRequest);

    }
}

Json 帖子(正文) {"Name":"Joe"} --> 有效 {"Name":"Joe","InvalidMember","test","Name","John"} --> 也有效。在这种情况下,我想触发一个异常。因为如果您查看它,它与我的模型定义不完全匹配。

最佳答案

您可以尝试使用此设置:

config.Formatters.JsonFormatter.SerializerSettings.MissingMemberHandling = MissingMemberHandling.Error;

当存在 JSON 中无法识别的额外属性时,它应该为您提供无效的模型状态。

关于c# - .NET WebAPI 中的 POST 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15790280/

相关文章:

c# - 当 WritableBitmap.BackBuffer 在非 UI 线程中更新时应用程序停止响应?

c# - 如何显示 AspNetUser 表中的密码?

c# - 尝试在我的 WebAPI 上调用特定的 GET 方法,但未找到 HTTP 404

javascript - 如果我的所有用户都有 AD 帐户,使用集成 Windows 身份验证来保护 .NET WebAPI 以供 JavaScript 客户端使用的风险是什么?

c# - Web API Put Request 生成 Http 405 Method Not Allowed 错误

serialization - 如何使用 RestSharp 将对象发布(作为 XML)到我的 ApiController?

c# - 来自 response.Content.ReadAsStreamAsync() 的流不可随机读取

c# - 无法获取窗口句柄?

c# - 使用 TPL 的协作式多任务处理

c# - EventLog.WriteEntry 高级信息