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

Как вернуть HTTP 429?

Я реализую API с использованием WCF, и в спецификации говорится, что в некоторых случаях возвращать HTTP 429.

Обычно я просто пишу:

throw new WebFaultException(HttpStatusCode.NotFound);

Однако перечисление HttpStatusCode не содержит 429.

Я могу, очевидно, применить к перечислению

throw new WebFaultException((HttpStatusCode)429);

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

Какой лучший способ создать расширение HttpStatusCode и отправить действительные (но неподдерживаемые) статусы HTTP?

4b9b3361

Ответ 1

Из С# Language Specification 5.0:

Набор значений, которые может принимать тип перечисления, не ограничен его перечислять членов. В частности, любое значение базового типа enum может быть перенесено в тип перечисления и является отдельным действительным значением этот тип перечисления.

Итак, это вполне нормально, и вам будет лучше:

throw new WebFaultException((System.Net.HttpStatusCode)429);

Ответ 2

Если вы размещаете службу WCF с помощью IIS, вы можете включить Режим совместимости ASP.Net. С этим вы можете установить статус HttpContext.Current.Response.StatusCode до 429.

Сказанное. Я думаю, ваш лучший выбор - попробовать перевести 429 в HttpStatusCode и посмотреть, что произойдет. Если это сработает, тогда вы можете сэкономить головную боль.