Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WebAPI验证数据批注创建运行时异常[HttpStatusCode 500]_C#_Asp.net Web Api_Data Annotations - Fatal编程技术网

C# WebAPI验证数据批注创建运行时异常[HttpStatusCode 500]

C# WebAPI验证数据批注创建运行时异常[HttpStatusCode 500],c#,asp.net-web-api,data-annotations,C#,Asp.net Web Api,Data Annotations,我似乎在谷歌上找不到与此问题相关的任何信息。 请帮忙 场景: 主要是我有一个带有控制器方法的WebAPI服务器,该方法需要一个简单类型作为参数。 该API如下所示: public HttpResponseMessage Foo([FromBody] LoginModel form) { // ...some code return this.Request.CreateResponse(HttpStatusCode.OK); } LoginType类如下所示: public

我似乎在谷歌上找不到与此问题相关的任何信息。
请帮忙

场景:
主要是我有一个带有控制器方法的WebAPI服务器,该方法需要一个简单类型作为参数。
该API如下所示:

public HttpResponseMessage Foo([FromBody] LoginModel form)
{
     // ...some code
     return this.Request.CreateResponse(HttpStatusCode.OK);
}
LoginType类如下所示:

public class LoginModel
{
    [Required]
    [EmailAddress(ErrorMessage = "Please have a Email address format")]
    public string Email;

    [Required]
    [StringLength(20, MinimumLength = 6, ErrorMessage = "Password must be between 6 and 20 characters")]
    public string Password;
}
当客户端尝试运行API方法时出现问题。我传递了一个类似以下内容的json
{“电子邮件”:xxx@xxx.com,“密码”:“oooooo”}

…我得到以下例外情况

异常消息:
“xxx.Mult.Login”类型的“字段”电子邮件属于一个或多个验证属性。不支持字段上的验证属性。请考虑使用公共属性进行验证。

当我从Fiddler运行api调用时也会发生同样的情况

注意:
如果我删除像[Required]这样的各种属性,它工作得很顺利。当这些属性就位时,客户端调用永远不会到达方法

感谢您的帮助!!!

就像上面说的:

不支持字段上的验证属性。请考虑使用公共属性进行验证。

所以使用属性

public string Email { get; set; }

容易错过的,有时只是需要另一双眼睛!