使用Web API和.NET Core,当我返回XML结果时,我得到以下内容:
<Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Response>
<Status>0</Status>
</Response>
</Test>
如何删除命名空间?
这是我的startup.cs文件的一部分
services
.AddMvc(config =>
{
// Add XML Content Negotiation
config.RespectBrowserAcceptHeader = true;
config.InputFormatters.Add(new XmlSerializerInputFormatter());
config.OutputFormatters.Add(new XmlSerializerOutputFormatter(new XmlWriterSettings
{
OmitXmlDeclaration = true,
}));
})
.AddXmlDataContractSerializerFormatters()
.AddXmlSerializerFormatters()
.AddMvcOptions(opt => opt.FormatterMappings.SetMediaTypeMappingForFormat("xml", new MediaTypeHeaderValue("application/xml")));
答案 0 :(得分:0)
XmlSerializer
和DataContractSerializer
格式化工具都会查找Content-Type
和Accept
的{{1}}或application/xml
标头值。因此,如果您同时注册第一个格式化程序,则只有一个格式化程序才能生效。
如果要支持XmlSerializer,则只注册该格式化程序,如果由于某种原因要同时支持这两种格式化程序,请确保更改它们要查找的内容类型。示例:application / xml-dcs,text / xml-dcs,application / xml-xmlser,text / xml-ser
如果出现上述问题,DataContractSerializerOutputFormatter可能会写出响应,因此您没有看到它生效。