Ошибка при попытке вернуть объект как XML с использованием QuotaExceededContent в WebApiThrottle - PullRequest
0 голосов
/ 05 декабря 2018

Я использую WebApiThrottle , и он отлично работает, за исключением случаев, когда я пытаюсь вернуть пользовательский объект ошибки.Моя конфигурация имеет следующее:

 QuotaExceededContent = (rateLimit, rateLimitPeriod) =>
 {
      return new ErrorModel(ErrorModel.ErrorTypes.TooManyRequests);
 }

Приведенный выше код работает нормально, возвращая JSON.Однако при попытке вернуть XML выдается следующая ошибка:

Тип 'xxx' с именем контракта данных 'xxx' не ожидается.Рассмотрите возможность использования DataContractResolver, если вы используете DataContractSerializer или добавляете любые типы, которые не известны статически, в список известных типов - например, с помощью атрибута KnownTypeAttribute или добавляя их в список известных типов, передаваемых сериализатору.

ErrorModel - это пользовательский класс, который я использую в другом месте, и он отлично работает как для возврата в JSON, так и в XML.На самом деле, я обычно возвращаю это так:

 return request.CreateResponse(HttpStatusCode.Unauthorized, new ErrorModel(ErrorModel.ErrorTypes.InvalidKey));

Когда я смотрю в исходном коде WebApiThrottle, кажется, что он делает то же самое (контент - это вывод моей конфигурации выше, которыймоя ErrorModel):

 var response = request.CreateResponse(responseCode, content);
 ...
 return Task.FromResult(response);

Это ошибка в WebApiThrottle или что-то, что мне нужно установить специально?QuotaExceededResponse () в WebApiThrottle является виртуальным, поэтому я могу переопределить его, но я просто не вижу разницы между этим методом и моим кодом, где он работает нормально.

...