То, когда чувствительность к регистру важна в JSON, запрашивает к веб-сервисам ASP.NET (ASMX)?

Я сделал следующие тесты с запросами 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;
}

23
задан Community 23 May 2017 в 11:46
поделиться

1 ответ

Согласно JSON-RPC spec, ответ всегда.

9.0 Чувствительность имен процедур и параметров к регистру

Соответствующие реализации ДОЛЖНЫ рассматривать имена процедур и параметров как чувствительные к регистру, так что имена bar и BAR будут восприниматься как два разных сущности.

Итак, похоже, что ситуации, когда это работало для вас, были исключениями, а не случаями, когда это не работало. Есть шанс, что кто-то на какой-то стороне уравнения просто не соблюдал спецификации.

53
ответ дан 29 November 2019 в 01:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: