В моем приложении я делаю несколько javascript-запросов для своих контроллеров Api, чтобы получить некоторые строки в формате html. Когда эти запросы сделаны с Accept: */*
HTTP-заголовком (метод jQuery $.get
), поэтому по умолчанию используется JsonMediaTypeFormatter
, а данные возвращаются с Content-Type: application/json
в формате JSON.WebApi: */* тип обработки мультимедиа
Я хотел бы обрабатывать */*
как text/html
. Так что я попытался создать пользовательский MediaTypeFormatter
, который поддерживает тип */*
средств массовой информации, но это дает мне следующую ошибку
«MediaTypeHeaderValue» из
*/*
не может быть использовано в качестве поддерживаемого типа СМИ, потому что это СМИ range.`
В качестве альтернативы, я всегда мог бы предоставить правильные ожидаемые типы данных в своих запросах, но мне любопытно, есть ли способ обрабатывать типы носителей */*
.
, что была моя первая мысль, но по какой-то причине 'JsonMediaTypeFormatter' вызывается первым в любом случае. Мой форматировщик вызывается только тогда, когда ожидаемый тип данных устанавливается в text/html в моих запросах. –
JsonMediaTypeFormatter имеет сопоставление заголовка запроса для XmlHttpRequest. если ваш запрос имеет этот заголовок, тогда всегда выбирается JsonMediaTypeFormatter. Форматы, которые сопоставляются с отображением типа медиа (здесь Json's RequestHeaderMapping), всегда ковыряют совпадения в заголовке Accept. FYI: проверьте этот исходный код: https://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Net.Http.Formatting/Formatting/XmlHttpRequestHeaderMapping.cs –
@KiranChalla, о, вау, спасибо. Не всегда, хотя XMLHttpRequests с правильным заголовком 'Accept' обрабатывается моим Formatter. Поэтому мне интересно, есть ли способ изменить это поведение для «пустых» заголовков Accept. –