小编典典

什么时候区分大小写在对ASP.NET Web服务(ASMX)的JSON请求中很重要?

ajax

我已经对发送到ASP.NET 2.0 ASMX Web服务的JSON请求进行了以下测试(使用ASP.NET
2.0的AJAX扩展1.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

  • 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扩展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;
}

阅读 185

收藏
2020-07-26

共1个答案

小编典典

根据JSON-RPC规范,答案始终是。

9.0过程和参数名称的区分大小写

一致的实现必须将过程和参数名称视为区分大小写,这样名称bar和BAR将被视为两个不同的实体。

因此,听起来像是对您有用的情况是例外,而不是没有例外的情况。可能是等式中某些方面的人只是不遵守规范。

2020-07-26