programing

는 ASP에 대한 JSON 요청에서 대소문자 민감도가 중요합니다.NET 웹 서비스(ASMX)?

testmans 2023. 10. 22. 19:44
반응형

는 ASP에 대한 JSON 요청에서 대소문자 민감도가 중요합니다.NET 웹 서비스(ASMX)?

저는 ASP로 보내진 JSON 요청으로 다음과 같은 테스트를 했습니다.NET 2.0 ASMX 웹 서비스(ASP용 AJAX Extensions 1.0 사용)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

  • Case of Web Servicerequest일치하지 않음:

    {"Request":{"address":{"Address1":"123 Main Street","Address2":"suite 20","City":"New York","State":"NY","Zip":"10000","AddressClassification":null}}}
    

    결과:

(빠른 메모:그 수업이 사실은.Request매개변수와request동일한 이름을 공유하는 것은 관련이 없습니다.매개 변수 이름을 다음으로 변경해도lrequest, 대소문자 구분이 여전히 필요합니다.)

JSON 웹 서비스 요청에서 대소문자 구분이 중요한 경우는 언제입니까?또한, 이것은 일반적인 웹 서비스 문제인가요 아니면 ASP에만 해당되는 문제인가요.넷 아약스?


추가 배경 정보:

ASP용으로 AJAX Extensions 1.0을 사용하고 있습니다.NET 2.0이므로 이 문제는 이후 버전의 프레임워크에서 해결되었을 수 있습니다.그렇다면 저에게 알려주시기 바랍니다.

JSON 문자열을 포맷하는 것과 관련된 가장 최근 질문에서 답변을 한 후, 저는 제 요청이 실패한 이유가 잘못된 JSON 때문이 아니라는 것을 깨달았습니다(J.Crowder가 이를 지적하고 JSON 검증을 위해 http://www.jsonlint.com/ 에 링크해 준 것에 감사드립니다).오히려 테스트를 좀 더 해본 결과, 문제는 웹 서비스가 제 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 사양에 따르면 답은 항상 다음과 같습니다.

9.0 대소문자 구분 절차 및 매개변수 명칭

적합한 구현은 절차와 매개 변수 이름을 대소문자를 구분하는 것으로 취급해야 합니다. 이름 바와 BAR는 별개의 두 개체로 간주됩니다.

그래서, 당신에게 효과가 있었던 상황들은 예외이지, 효과가 없었던 상황들은 아닌 것 같습니다.아마도 어떤 면에서 누군가가 사양을 준수하지 않았을 가능성이 있습니다.

언급URL : https://stackoverflow.com/questions/2738321/when-is-case-sensitivity-important-in-json-requests-to-asp-net-web-services-asm

반응형