2010-04-29 20 views
18

Tôi đã thực hiện các thử nghiệm sau đây với các yêu cầu JSON được gửi tới dịch vụ web ASP.NET 2.0 ASMX (sử dụng AJAX Extensions 1.0 cho ASP.NET 2.0) và có vẻ như trường hợp nhạy cảm là quan trọng trong một số trường hợp nhưng không phải ở những trường hợp khác. Xem các ví dụ sau:Khi nào thì độ nhạy trường hợp quan trọng trong các yêu cầu JSON đối với dịch vụ web ASP.NET (ASMX)?

  • Trường hợp phù hợp 100%:

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

    Kết quả: HTTP/1.1 200 OK

  • Trường hợp của tên đối tượng chứa Address không phù hợp:

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

    quả : HTTP/1.1 200 OK

  • Trường hợp của tham số dịch vụ web request không phù hợp:

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

    Kết quả: HTTP/1.1 500 Internal Server Error

(lưu ý nhanh: Thực tế là lớp Request và tham số request cổ phiếu cùng một tên không phải là relavant. Ngay cả khi tôi thay đổi tên thông số thành lrequest, vẫn cần phải có độ nhạy trường hợp.)

Khi nào có sự nhạy cảm trong yêu cầu dịch vụ Web JSON? Ngoài ra, đây có phải là một vấn đề dịch vụ web chung hay là đặc trưng cho ASP.NET AJAX?


thông tin cơ bản khác:

Tôi đang sử dụng Extensions AJAX 1.0 cho ASP.NET 2.0, vì vậy điều này có thể được giải quyết trong các phiên bản sau của khuôn khổ này. Nếu vậy, xin vui lòng cho tôi biết.

Sau khi theo dõi câu trả lời trong question regarding formatting JSON strings gần đây nhất của tôi, tôi nhận ra rằng lý do yêu cầu của tôi không thành công do JSON không hợp lệ (nhờ T.J. Crowder để chỉ ra và liên kết với http://www.jsonlint.com/ để xác thực JSON). Thay vào đó, sau khi thực hiện một số thử nghiệm khác, tôi đã học được rằng vấn đề là do dịch vụ web không định dạng đối tượng JSON của tôi và tôi phát hiện ra dịch vụ web rất picky liên quan đến độ nhạy của chữ hoa. Dường như đôi khi trường hợp nhạy cảm là quan trọng, trong khi những lúc khác thì không (xem ví dụ ở trên).

Đây là những gì # mã C của tôi đối với phương pháp web và các lớp trông giống như:

[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; 
} 

Trả lời

38

Theo JSON-RPC spec, câu trả lời luôn là.

6.5.Case-nhạy về thủ tục và Parameter Names

triển khai Phù hợp PHẢI trị thủ tục và tham số tên như là trường hợp nhạy cảm như thanh tên và BAR sẽ được coi là hai khác biệt thực thể.

Vì vậy, có vẻ như các tình huống khi nó hoạt động cho bạn là ngoại lệ, không phải trường hợp họ không làm như vậy. Rất có thể là một người nào đó ở một số bên của phương trình đã không chỉ tôn trọng các thông số kỹ thuật.

+0

@Sắp xếp lại độ nhạy trường hợp của các tham số và tên phương thức có ý nghĩa. Nhưng những gì về tên đối tượng trong các tham số đó? –

+2

Thành thật mà nói, tôi vẫn sẽ giải thích tên đối tượng như các tham số cho đến nay khi áp dụng spec đi. Tôi nghĩ rằng kịch bản thứ hai của bạn với "địa chỉ" trả lại kết quả 200 là sự bất thường. Tất nhiên, đây hoàn toàn là phỏng đoán mà không thấy mã MS sử dụng đằng sau hậu trường. – Serapth

Các vấn đề liên quan