Asp.net

何時在對 ASP.NET Web 服務 (ASMX) 的 JSON 請求中區分大小寫很重要?

  • April 29, 2010

我已經使用發送到 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 將被視為兩個不同的實體。

所以,聽起來它對你有用的情況是例外,而不是它們沒有用的情況。很可能有人在等式的某些方面只是不遵守規範。

引用自:https://stackoverflow.com/questions/2738321