何時在對 ASP.NET Web 服務 (ASMX) 的 JSON 請求中區分大小寫很重要?
我已經使用發送到 ASP.NET 2.0 ASMX Web 服務(使用 AJAX Extensions 1.0 for ASP.NET 2.0)的 JSON 請求完成了以下測試,似乎區分大小寫在某些情況下很重要,但在其他情況下並不重要。請參閱以下範例:
- 案例匹配 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
- Web服務參數
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 Web 服務請求中的區分大小寫何時重要?**此外,這是一般的 Web 服務問題還是特定於 ASP.NET AJAX?
其他背景資訊:
我正在為 ASP.NET 2.0 使用 AJAX Extensions 1.0,因此這可能已在框架的更高版本中得到解決。如果是這樣,請告訴我。
在跟進我最近關於格式化 JSON 字元串的問題的答案後,我意識到我的請求失敗的原因不是因為無效的 JSON(感謝TJ Crowder指出這一點並連結到http://www. jsonlint.com/用於 JSON 驗證)。相反,在進行了更多測試後,我了解到問題在於 Web 服務沒有按照我的 JSON 對象的格式設置,而且我發現 Web 服務在區分大小寫方面非常*挑剔。*有時區分大小寫似乎很重要,而其他時候則不重要(參見上面的範例)。
這是我的 Web 方法和類的 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 和 BAR 將被視為兩個不同的實體。
所以,聽起來它對你有用的情況是例外,而不是它們沒有用的情況。很可能有人在等式的某些方面只是不遵守規範。