我在WebApi2服务中使用了以下类。
[DataContract()]
public class TokenRequest
{
[Required]
[DataMember(Name = "last_name")]
public String LastName { get; set; }
[Required]
[DataMember(Name = "badge_number")]
public String BadgeNumber { get; set; }
}
正如您所看到的,该类的属性与[DataMember(Name = "...")]
使用以下控制器
[Route("Service/GetToken")]
[HttpPost]
public IHttpActionResult GetToken(TokenRequest request) { ... }
我原本希望使用以下POST主体获取TokenRequest对象
last_name=Stillwell&badge_number=0000
但是,request.LastName
和request.BadgeNumber
都为空。
现在,如果我这样提出请求:
LastName=Stillwell&BadgeNumber=0000
request.LastName
和request.BadgeNumber
将具有正确的值。当我使用[DataMember(Name = "...")]
或last_name
时,为什么没有badge_number
提升我的价值?
答案 0 :(得分:0)
我能够通过在Controller中返回TokenRequest
来解决此问题。
[Route("Service/GetToken")]
[HttpPost]
public TokenRequest GetToken(TokenRequest request) { ... }
然后,在我的WebApiConfig.cs文件中,我添加了以下内容
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
这将返回JSON而不是XML。请参阅:here