Я сделал следующие тесты с запросами JSON, отправленными на ASP.NET 2.0 веб-сервиса ASMX (использующий Расширения Ajax 1.0 для ASP.NET 2.0), и кажется, что чувствительность к регистру важна в некоторых ситуациях, но не в других. Посмотрите следующие примеры:
Случай соответствует 100%:
{"request":{"Address":{"Address1":"123 Main Street","Address2":"suite 20","City":"New York","State":"NY","Zip":"10000","AddressClassification":null}}}
Результат: HTTP/1.1 200 OK
Случай имени содержащего в нем объекта Address
не соответствует:
{"request":{"address":{"Address1":"123 Main Street","Address2":"suite 20","City":"New York","State":"NY","Zip":"10000","AddressClassification":null}}}
Результат: HTTP/1.1 200 OK
Случай параметра веб-сервиса request
не соответствует:
{"Request":{"address":{"Address1":"123 Main Street","Address2":"suite 20","City":"New York","State":"NY","Zip":"10000","AddressClassification":null}}}
Результат: HTTP/1.1 500 Internal Server Error
(Быстрое примечание: то, что класс Request
и параметр request
доля то же имя не релевантна. Даже если я изменяю название параметра к lrequest
, чувствительность к регистру все еще требуется.)
Когда важна чувствительность к регистру в Запросах к веб-сервису JSON? Кроме того, действительно ли это - общая проблема веб-сервиса, или действительно ли это характерно для Ajax ASP.NET?
Дополнительная справочная информация:
Я использую Расширения Ajax 1.0 для ASP.NET 2.0, таким образом, это, возможно, было обращено в более поздних версиях платформы. Раз так сообщите мне.
После развития к ответам в моем новом вопросе относительно форматирования строк JSON я понял, что причина, которую приводил к сбою мой запрос, не была из-за недопустимого JSON (благодаря T.J. Crowder для указания, что и соединение с http://www.jsonlint.com/ для проверки JSON). Скорее после выполнения еще некоторого тестирования я узнал, что проблема состояла в том, потому что веб-сервис не сделал, как мой объект JSON был отформатирован, и я обнаружил, что веб-сервис был очень придирчив в отношении чувствительности к регистру. Кажется, что иногда чувствительность к регистру важна, тогда как другие времена, которые это не (см. примеры выше).
Вот то, что мои C# кодируют для веб-метода, и классы похож:
[WebMethod]
public Response ValidateAddress(Request request)
{
return new test_AddressValidation().GenerateResponse(
test_AddressValidation.ResponseType.Ambiguous);
}
...
public class Request
{
public Address Address;
}
public class Address
{
public string Address1;
public string Address2;
public string City;
public string State;
public string Zip;
public AddressClassification AddressClassification;
}
public class AddressClassification
{
public int Code;
public string Description;
}
Согласно JSON-RPC spec, ответ всегда.
9.0 Чувствительность имен процедур и параметров к регистру
Соответствующие реализации ДОЛЖНЫ рассматривать имена процедур и параметров как чувствительные к регистру, так что имена bar и BAR будут восприниматься как два разных сущности.
Итак, похоже, что ситуации, когда это работало для вас, были исключениями, а не случаями, когда это не работало. Есть шанс, что кто-то на какой-то стороне уравнения просто не соблюдал спецификации.