es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Agregar un nuevo MediaType a NewtonsoftJsonInputFormatter no funciona.

Me gustaría agregar un nuevo MediaType al formateador de entrada MvcOptions en .Net 5.

Cuando hago lo siguiente:

services.AddControllers();
services.Configure<Microsoft.AspNetCore.Mvc.MvcOptions>(options =>
{
    options.InputFormatters
 .OfType<Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonInputFormatter>()
 .First()
 .SupportedMediaTypes
 .Add(new Microsoft.Net.Http.Headers.MediaTypeHeaderValue("application/csp-report"));
});

Todo funciona bien. Pero quiero usar Newtonsoft.Json en lugar del JsonSerializer predeterminado, así que cambié mi código a:

services.AddControllers()
          .AddNewtonsoftJson();
services.Configure<Microsoft.AspNetCore.Mvc.MvcOptions>(options =>
{
    options.InputFormatters
 .OfType<Microsoft.AspNetCore.Mvc.Formatters.NewtonsoftJsonInputFormatter>()
 .First()
 .SupportedMediaTypes
 .Add(new Microsoft.Net.Http.Headers.MediaTypeHeaderValue("application/csp-report"));
});

Pero ahora, cada vez que se envía un application/csp-report al controlador, obtengo un código de estado 415.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en json.net, .net-5, media-type y input formatter, para añadir un nuevo MediaType al MvcOptions input formatter en .Net 5 cuando se utiliza Newtonsoft.Json en lugar del serializador Json por defecto, deberías seguir estos pasos:

    1. Añade el paquete Newtonsoft.Json a tu proyecto.
    2. Reemplaza AddControllers() por AddControllers().AddNewtonsoftJson() para utilizar el serializador Newtonsoft.Json en lugar del serializador por defecto.
    3. Configura los MvcOptions para incluir el nuevo tipo de media application/csp-report para NewtonsoftJsonInputFormatter de la siguiente manera:
    services.Configure<mvcoptions>(options =>
    {
        options.InputFormatters.OfType<newtonsoftjsoninputformatter>()
        .First()
        .SupportedMediaTypes
        .Add(new MediaTypeHeaderValue("application/csp-report"));
    });
    

    Después de estos pasos, deberías poder enviar datos con el tipo de media application/csp-report a tu controlador sin recibir un código de estado 415.

Comments are closed.