Asp.net web api 获取.net核心WebAPI中的xml字符串或反序列化对象

Asp.net web api 获取.net核心WebAPI中的xml字符串或反序列化对象,asp.net-web-api,Asp.net Web Api,NETCore中的WebAPI可以优雅地处理Json请求,但它似乎无法以本机方式处理XML内容类型 我做了一些搜索,只得到了关于这个的帖子 然而,我试了如下,没有成功 services .AddMvc() .AddJsonOptions(options => { options.SerializerSettings.TypeNameHandling = Newtonsoft.Json.TypeNameHandling.Auto; })

NETCore中的WebAPI可以优雅地处理Json请求,但它似乎无法以本机方式处理XML内容类型

我做了一些搜索,只得到了关于这个的帖子

然而,我试了如下,没有成功

services
    .AddMvc()
    .AddJsonOptions(options =>
    {
        options.SerializerSettings.TypeNameHandling = Newtonsoft.Json.TypeNameHandling.Auto;
    })
    .AddMvcOptions(options =>
    {
        //var jsonFormatter = options.InputFormatters.First(o => o.GetType() == typeof(JsonInputFormatter));
        //if (jsonFormatter != null) { options.InputFormatters.Remove(jsonFormatter); }
        options.InputFormatters.Add(new XmlSerializerInputFormatter());
        options.InputFormatters.Add(new XmlDataContractSerializerInputFormatter());
        options.RespectBrowserAcceptHeader = true; // false by default
        options.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter(
            new System.Xml.XmlWriterSettings
            {
                ConformanceLevel = System.Xml.ConformanceLevel.Auto,
                WriteEndDocumentOnClose = true
            }
            ));
        var a = options.FormatterMappings.GetMediaTypeMappingForFormat("text/xml");
    })
    .AddXmlSerializerFormatters()
    .AddXmlDataContractSerializerFormatters()
    ;
下面是我的控制器操作

// POST api/values
[HttpPost("Order")]
public string OrderRetrievea([FromBody] OrderRequest request)
{
}
内容类型设置为text/xml

Xml请求:

<?xml version="1.0"?>
<OrderRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.myco.org/ns">
   ....
</OrderRequest>

....

它(请求)总是空的。

你发送的是什么XML?@CodeCaster我刚刚编辑了这个问题以添加更多信息。你的XML有一个名称空间。您的模型是否用该名称空间进行了注释?另请参见@CodeCaster我仍然需要这个名称空间信息来进行模式验证,所以我必须创建自定义XMLFormatter?但在.NETCore中还没有找到任何关于此的帖子。我正在考虑只获取字符串,然后在操作中手动设置格式,但它甚至不允许使用content type=“text/xml”进行设置。如果传入xml上的名称空间与用于反序列化为的模型匹配,那么它也应该可以工作。:)你要发送什么XML?@CodeCaster我刚刚编辑了这个问题以添加更多信息。你的XML有一个名称空间。您的模型是否用该名称空间进行了注释?另请参见@CodeCaster我仍然需要这个名称空间信息来进行模式验证,所以我必须创建自定义XMLFormatter?但在.NETCore中还没有找到任何关于此的帖子。我正在考虑只获取字符串,然后在操作中手动设置格式,但它甚至不允许使用content type=“text/xml”进行设置。如果传入xml上的名称空间与用于反序列化为的模型匹配,那么它也应该可以工作。:)