Ich versuche, ein Attribut zu erstellen, die Datenrückgabe aus einer Aktion andersWebAPI Vorübergehend außer Kraft setzen JsonFormatter von OnActionExecuted
public override void OnActionExecuted(HttpActionExecutedContext filterContext)
{
var content = (filterContext.Response.Content as ObjectContent);
if (content == null)
{
return;
}
if (content.ObjectType.IsGenericType
&& content.ObjectType.GetGenericTypeDefinition() == typeof (Page<>))
{
var pageObject = (content.Value as IPage);
var jsonFormatterRule = new JsonFormatterRule();
var pageJson = JsonConvert.SerializeObject(pageObject.ItemsArray,
jsonFormatterRule.GetPascalCasedSettings());
//How do I set the content that \/ doesn't compile?
//filterContext.Response.Content = pageJson;
}
}
Dies ist die JsonFormatterRules Incase jemand sie sehen wollte serialisiert werden.
public JsonSerializerSettings GetDefaultSettings()
{
var settings = new JsonSerializerSettings()
{
Formatting = Formatting.Indented,
ContractResolver = new CamelCasePropertyNamesContractResolver(),
DateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind,
};
settings.Converters.AddRange(defaultConfiguredConverters);
return settings;
}
public JsonSerializerSettings GetPascalCasedSettings()
{
var settings = this.GetDefaultSettings();
settings.ContractResolver = new DefaultContractResolver();
return settings;
}
Wie kann ich den Inhalt von aus ausgeführte Aktion festlegen? Ich kann den Standard-Serializer nicht global auf DefaultContract ändern, da dies Threading-Probleme verursachen kann.
Auch würde ich lieber keine neue Antwort erstellen und kopieren Sie die Header aus dem alten, die wie über töten scheint.
Was möchten Sie genau machen? Haben Sie für einige Aktionen einen anderen Serializer? – dotctor
@dotctor Ja Verschiedene Serializer von einigen Aktionen basierend auf einem Attribut –