В соответствии с Microsoft и Mozilla документами код состояния 415:
Microsoft:
HTTP_STATUS_UNSUPPORTED_MEDIA
415
Сервер отказывается обслуживать запрос, поскольку объект запроса находится в формате, не поддерживаемом запрашиваемым ресурсом для запрошенного метода.
Mozilla
Код ответа об ошибке клиента HTTP 415 Unsupported Media Type указывает, что сервер отказывается принять запрос, потому что формат полезной нагрузки находится в неподдерживаемом формате.
Почему, если я устанавливаю содержимоевведите JSON и отправьте XML в качестве тела запроса. Я получаю 400 по умолчанию, когда мне нужно получить 415?
Каков наилучший способ получить 415, если запрос не в допустимом формате JSON?Я добился этого с помощью фильтра ресурсов, но я думаю, что было бы бесполезно читать тело запроса дважды каждый раз , если есть другой способ.
вот мой код:
public class MyResourceFilter:Attribute, IResourceFilter
{
public void OnResourceExecuting(ResourceExecutingContext context)
{
context.HttpContext.Request.EnableRewind();
var requestBodyText = new StreamReader(context.HttpContext.Request.Body).ReadToEnd();
context.HttpContext.Request.Body.Position = 0;
try
{
JsonConvert.DeserializeObject<object>(requestBodyText);
}
catch (Exception e)
{
context.Result= new UnsupportedMediaTypeResult();
}
}
public void OnResourceExecuted(ResourceExecutedContext context)
{
}
}