我想添加一个自定义的xml解串器到我的控制器之一的ASP.Net核心管道。我已经能够这样做JSON像这样:反序列化Asp.NET核心中的XML MVC
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.Configure<MvcOptions>(options =>
{
options.RespectBrowserAcceptHeader = true;
// Input formatters
var xmlInputFormatting = new XmlDataContractSerializerInputFormatter();
var jsonInputFormatting = new JsonInputFormatter();
jsonInputFormatting.SerializerSettings.Converters.Add(new BatchContentConverter());
options.InputFormatters.Clear();
options.InputFormatters.Add(jsonInputFormatting);
options.InputFormatters.Add(xmlInputFormatting);
}
}
(很多不必要的代码已被删除为简洁起见)。
控制器动作,其中本应该结束了是:
public IActionResult Post([FromBody]IBatchContent batchContent)
{
}
有没有办法做到的使用无论是XMLSerializerInputFormatter或XmlDataContractSerializerInputFormatter XML相似的地方?我试着创建一个从DataContractResolver后裔的类,并将其分配给SerializerSettings.DataContractResolver属性,但它似乎永远不会被调用。
其实我加入他们,我只是删除他们从简洁的代码示例:我试图找出如何添加自定义反序列化程序给他们以同样的方式,我在上面的示例中为Json添加BatchContentConverter –
您试图自定义现有的(xmlserializer和datacontractserializer)序列化程序有一些自定义行为?如果是这样,你应该检查这些序列化程序的功能,因为MVC的格式化程序只是对它们的封装。当然,如果MVC没有公开某些可以启用你的场景的设置,那很有趣。 –