[英]ASP.NET MVC Web Api: application/xml PUT request body is null on server side
[英]XML deserialization from request body in ASP.NET MVC
我正在尝试设置一个MVC应用程序,该应用程序的端点可以接受请求正文中的XML,然后对其进行处理。 我已将其简化以尝试缩小问题的范围,所以这是我的模型:
Public Class MyModel
Public Property Value1 As String
Public Property Value2 As String
End Class
我的控制器中有此设置:
<HttpPost()> _
Public Function Launch(<FromBody()> ByVal myModel As MyModel) As ActionResult
' ...
' myModel is always a new object but with null properties
' ...
End Function
这是我正在发送的HTTP请求:
POST /launch HTTP/1.1
Host: example.com
Accept: application/xml
Content-Type: application/xml
<MyModel>
<Value1>1</Value1>
<Value2>2</Value2>
</MyModel>
当我调试时,它将命中正确的端点,但myModel
始终为空。 空表示对象已实例化,但它的所有属性均为null
。
我已经搜索了整个stackoverflow的答案,但是没有任何效果。 我在Global.asax
代码中添加了config.Formatters.XmlFormatter.UseXmlSerializer = True
,但这似乎不起作用。 我还添加了一个自定义XmlMediaTypeFormatter
,它忽略了似乎也不执行任何操作的xml名称空间。
有什么明显的失踪明显吗? 我知道我使用的是VB.NET,而我所看到的所有示例都是C#,因此在翻译中可能会丢失一些内容。 在这一点上,我很难理解为什么这么难做到。
问题是因为我的控制器是System.Web.Mvc.Controller
类型,而不是System.Web.Http.ApiController
类型。 MVC控制器不具有WebAPI控制器所具有的反序列化功能,因此期望JSON数据或HTML表单数据作为有效负载。 将控制器的类更改为System.Web.Http.ApiController
它开始工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.