validate remove net negotiation modelstatedictionary from content asp .net asp.net-web-api httpresponse mediatypeformatter

.net - remove - web api from uri



API web: contenido en HttpResponseMessage (1)

En una de mis solicitudes Get, quiero devolver un HttpResponseMessage con cierto contenido. Actualmente lo tengo trabajando de la siguiente manera:

var header = new MediaTypeHeaderValue("text/xml"); Request.CreateResponse(HttpStatusCode.OK, myObject, header);

Sin embargo, dado que estoy usando la Solicitud estática, esto se vuelve realmente difícil de probar. Por lo que he leído, debería poder hacer lo siguiente:

return new HttpResponseMessage<T>(objectInstance);

Sin embargo, parece que no puede hacer esto. ¿Es porque estoy usando una versión anterior de WebApi / .NET?

En una nota lateral, descubrí que podrías crear una respuesta de la siguiente manera:

var response = new HttpResponseMessage(); response.Content = new ObjectContent(typeof(T), objectInstance, mediaTypeFormatter);

Lo que me desconcertó es por qué tengo que agregar un mediaTypeFormatter aquí. He agregado el formateador de tipo de medios al nivel global.asax.

¡Gracias!


HttpResponseMessage<T> se eliminó después de Beta. En este momento, en lugar de un HttpResponseMessage mecanografiado, tenemos ObjectContent mecanografiado

Si crea HttpResponseMessage manualmente utilizando su constructor sin parámetros predeterminado, no hay un contexto de solicitud disponible para realizar la negociación de contenido; es por eso que necesita especificar el formateador o realizar la negociación de contenido a mano.

Entiendo que no quieres hacer eso, así que utiliza esto en su lugar:

HttpResponseMessage response = Request.CreateResponse<MyObject>(HttpStatusCode.OK, objInstance);

Eso crearía el mensaje de respuesta basándose en la negociación de contenido realizada en contra de la solicitud.

Finalmente, puedes leer más sobre la negociación de contenido aquí en este enlace