绑定不适用于简单类型的所有值

时间:2014-03-29 03:51:26

标签: c# asp.net-web-api

在Web API中,我使用以下内容将XML发布到控制器:

public class UserController : ApiController
{
    [HttpPost]
    public HttpResponseMessage Post(CreateUser createuser)
    {
        // set the break point here and its showing name and password are populated, but email and emailcc are not. 
        CreateUserResponse results = new CreateUserResponse();

        if (createuser == null)
        {
            results.Message = "it is null";
            return Request.CreateResponse(HttpStatusCode.Accepted, results);
        }
        else
        {
            results.Message= "it is not null";
            return Request.CreateResponse(HttpStatusCode.Accepted, results);
        }
    }
}

使用这些类:

public class CreateUser
{
    public string UserName { get; set; }
    public string UserPassword { get; set; }
    public string UserEmail { get; set; }
    public string UserEmailCC { get; set; }
}

public class CreateUserResponse 
{
    public string Message { get; set; } 
}

当我查看传递给CreateUser类型的值时,我能够看到在Fiddler中传递的UserName和UserPassword以及控制器中的断点。 UserEmail和UserEmailCC在Fiddler中可见,但在控制器中显示为null。

是否存在特定于Web API绑定的内容会导致这些内容无法正确绑定并且是否存在解决方法或者我是否遗漏了某些内容?

更新:(2014/04/01)如果我按照字母顺序更改类中字段的顺序。我可以看到电线上的数值。不确定为什么XML消息会出现这种情况。

在更改以这种方式排序字段的类时:

    public string UserEmail { get; set; }
    public string UserEmailCC { get; set; }
    public string UserName { get; set; }
    public string UserPassword { get; set; }

1 个答案:

答案 0 :(得分:0)

此问题有解决方法。请参阅此链接了解详情。

WCF Disable Deserialization Order Sensitivity