我想添加一個自定義的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沒有公開某些可以啓用你的場景的設置,那很有趣。 –