Обработка недопустимых запросов JSONP в веб-API
Я использую WebApiContrib.Formatting.Jsonp в службе Web API 2, а также Swagger для документации и тестирования API.
Когда я запускаю любой метод JSONP через Swagger, мой сервис падает в файле JsonpMediaTypeFormatter.cs в следующей строке:
throw new InvalidOperationException(Properties.Resources.NoCallback);
// NoCallback = The name 'NoCallback' does not exist in the current context
Во-первых, я не понимаю, почему Swagger не позволяет указывать имя обратного вызова для запросов JSONP. Но что более важно, я не хочу, чтобы сервис зависал из-за этого.
Вопросы:
- Как мы можем справиться с такими ошибками на стороне сервиса?
- Есть ли способ заставить Swagger правильно отправлять JSONP-запросы? (например, предварительно определив имя обратного вызова для всех запросов JSONP?)
1 ответ
PM> Install-Package Newtonsoft.Json.Schema
Или вы можете загрузить исходный код по адресу https://github.com/JamesNK/Newtonsoft.Json.Schema/releases
JSchema schema = JSchema.Parse(request.Schema);
JToken json = JToken.Parse(request.Json);
// validate json
IList<ValidationError> errors;
bool valid = json.IsValid(schema, out errors);
// return error messages and line info to the browser
return new ValidateResponse
{
Valid = valid,
Errors = errors
};