Подтвердить что ты не робот

Веб-API: содержимое в HttpResponseMessage

В одном из моих запросов Get я хочу вернуть HttpResponseMessage с некоторым контентом. В настоящее время я работаю следующим образом:

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

Однако, поскольку я использую статический запрос, это становится очень трудно проверить. Из того, что я прочитал, я должен был бы сделать следующее:

return new HttpResponseMessage<T>(objectInstance);

Однако, похоже, это невозможно. Это потому, что я использую более старую версию WebApi/.NET?


На боковой ноте я обнаружил, что вы могли бы создать ответ следующим образом:

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

Что меня озадачило, почему я должен добавить здесь mediaTypeFormatter. Я добавил форматтера медиафайлов на уровне global.asax.

Спасибо!

4b9b3361

Ответ 1

HttpResponseMessage<T> был удален после Бета. Прямо сейчас, вместо типизированного HttpResponseMessage, мы набрали ObjectContent

Если вы вручную создаете HttpResponseMessage, используя свой конструктор без параметров без ссылки, для выполнения согласования содержимого нет контекста запроса, поэтому вам нужно указать форматтер или выполнить согласование содержимого вручную.

Я понимаю, что вы не хотите этого делать - используйте вместо этого:

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

Это создало бы ответное сообщение, основанное на согласовании содержимого, выполненном против запроса.

Наконец, вы можете больше узнать о контенте контента здесь По этой ссылке