我正在使用Postman扩展程序并尝试将 Xml post post 发送到我的网络API。
样本型号:
[DataContract(Namespace = "")]
public class Employee
{
[DataMember]
[Range(10000, 99999)]
public int Id { get; set; }
[DataMember]
public string FirstName { get; set; }
[DataMember]
[Required]
[MaxLength(20)]
public string LastName { get; set; }
}
在执行请求时,我总是在我的控制器的 post method 中获得 null employee object 。
如果我发送 JSON 请求,那么它可以正常工作。
我也尝试在DataContract属性中提供命名空间,但它不起作用。
答案 0 :(得分:0)
我遇到了和你一样的问题,但我按照以下方式设置了我的课程:
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
XML中的数据会自动映射到您的Employee类。
我的问题是,XML是区分大小写的。确保所有XML参数名称与您的类参数匹配。它只需要一个参数就会出错,整个请求将为null。检查请求对象下的调试日志树是否看到以下错误(您必须搜索它,但它在那里):
Incorrect Content-Type: application/xml;charset=UTF-8
如果您看到,那么有一个参数不正确。按参数发送请求参数,直到找到错误的参数。
至于从XML序列化到XML,确保startup.cs只有以下代码:
services.AddMvc().AddXmlSerializerFormatters();
在您的控制器中,将类顶部的注释设置为:
[Produces("application/XML")]
并在您的路线方法上将其设置为:
[Consumes("application/XML")]
可悲的是,我在这个问题上失去了一天半。这个链接很有用:
https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding
更多的灵魂摧毁是其他人也遇到了同样的问题。然而,他们已经解决了这个问题,但没有礼貌地告诉其他人。
提示:尝试使用SoapUI的免费版本,它还有一些真正有助于调试的功能。