Ich versuche, einen benutzerdefinierten XML-Deserializer zur ASP.Net Core-Pipeline für einen meiner Controller hinzuzufügen. Ich konnte es für JSON wie folgt tun:Deserialisieren von XML in Asp.NET Core 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);
}
}
(viel unnötiger Code wurde der Kürze halber entfernt).
Die Controller-Aktion, wo dies am Ende sollte, ist:
public IActionResult Post([FromBody]IBatchContent batchContent)
{
}
Gibt es eine Möglichkeit etwas ähnliches für XML entweder die XMLSerializerInputFormatter oder die XmlDataContractSerializerInputFormatter mit zu tun? Ich habe versucht, eine von DataContractResolver abstammende Klasse zu erstellen und sie der SerializerSettings.DataContractResolver-Eigenschaft zuzuweisen, aber sie scheint nie aufgerufen zu werden.
ich tatsächlich sie das Hinzufügen bin Datei, ich tat sie nur aus dem Codebeispiel für Kürze: Ich versuche, herauszufinden, wie benutzerdefinierte De-Serialisierer zu ihnen auf die gleiche Weise hinzugefügt werden, die ich den BatchContentConverter für Json im Beispiel über hinzufügen –
Sie versuchen, die vorhandenen (Serializer xmlserializer und DataContractserializer) anzupassen einige zu haben benutzerdefiniertes Verhalten? Wenn dies der Fall ist, sollten Sie die Fähigkeiten dieser Serialisierer überprüfen, da die Formatierer von MVC nur Wrapper um sie sind. Natürlich, wenn MVC einige Einstellungen freigibt, die Ihr Szenario ermöglichen würden, wäre das interessant. –