Я пытаюсь настроить приложение 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
.
Я искал ответ по всему стеку, и ничего не помогло. Я добавил config.Formatters.XmlFormatter.UseXmlSerializer = True
в код Global.asax
, но это не сработало. Я также добавил пользовательский XmlMediaTypeFormatter
, который игнорирует пространства имен xml, который, похоже, тоже ничего не делает.
Есть ли что-то явно очевидное, что я скучаю? Я знаю, что использую VB.NET, и все примеры, которые я видел, были C #, так что, возможно, что-то было потеряно в переводе. На данный момент мне трудно понять, почему это так трудно сделать.