首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET MVC中请求体的XML反序列化

ASP.NET MVC中请求体的XML反序列化
EN

Stack Overflow用户
提问于 2018-04-24 17:15:05
回答 1查看 632关注 0票数 0

我正在尝试设置一个MVC应用程序,它的端点可以在请求体中接受XML,然后对其进行处理。为了缩小问题的范围,我对此进行了简化,下面是我的模型:

代码语言:javascript
运行
复制
Public Class MyModel
    Public Property Value1 As String
    Public Property Value2 As String
End Class

我的控制器里有这样的装置:

代码语言:javascript
运行
复制
<HttpPost()> _
Public Function Launch(<FromBody()> ByVal myModel As MyModel) As ActionResult
    ' ...
    ' myModel is always a new object but with null properties
    ' ...
End Function

下面是我发送的HTTP请求:

代码语言:javascript
运行
复制
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

我到处都在寻找答案,但什么也没有成功。我在config.Formatters.XmlFormatter.UseXmlSerializer = True代码中添加了Global.asax,但这似乎行不通。我还添加了一个自定义XmlMediaTypeFormatter,它忽略了xml空间,这似乎也不起任何作用。

我错过了什么明显的东西吗?我知道我正在使用VB.NET,我看到的所有例子都是C#,所以在翻译过程中可能丢失了一些东西。在这一点上,我很难理解为什么这很难做到。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-26 13:15:55

问题在于我的控制器是System.Web.Mvc.Controller类型的,而不是System.Web.Http.ApiController类型的。MVC控制器不具有与WebAPI控制器相同的反序列化能力,因此期望JSON数据或HTML数据作为有效负载。在将控制器的类更改为System.Web.Http.ApiController之后,它工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50007455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档