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

前端之家收集整理的这篇文章主要介绍了在ASP.NET Web服务(ASMX)的JSON请求中,什么时候区分大小写是重要的?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经使用发送到ASP.NET 2.0 ASMX Web服务的JSON请求(使用AJAX Extensions 1.0 for ASP.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
>包含对象名称的情况地址不匹配:

{"request":{"address":{"Address1":"123 Main Street","AddressClassification":null}}}

结果:HTTP / 1.1 200 OK
> Web服务参数请求的情况不匹配:

{"Request":{"address":{"Address1":"123 Main Street","AddressClassification":null}}}

结果:HTTP / 1.1 500内部服务器错误

(快速注意事项:Request类和参数请求共享同名的事实并不相关,即使将参数名称更改为lrequest,仍然需要区分大小写。)

JSON Web Service请求中的区分大小写何时重要?另外,这是一个一般的Web服务问题,还是ASP.NET AJAX特定的?

附加背景资料:

我正在使用AJAX Extensions 1.0 for ASP.NET 2.0,所以这可能已经在更高版本的框架中被解决了。如果是,请让我知道。

在跟踪我最近的question regarding formatting JSON strings中的答案后,我意识到我的请求失败的原因不是因为无效的JSON(感谢T.J. Crowder指出并链接http://www.jsonlint.com/进行JSON验证)。相反,在做了一些更多的测试之后,我发现问题是因为Web服务没有我的JSON对象被格式化,我发现Web服务在区分大小写方面非常挑剔。看起来有时候敏感性很重要,而其他时候则不是(见上面的例子)。

这是我的C#代码的Web方法和类看起来像:

[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 spec,答案是永远。

6.5. Case-Sensitivity of Procedure and Parameter Names

Conforming implementations MUST treat
procedure and parameter names as being
case-sensitive such the names bar and
BAR would be seen as two distinct
entities.

所以,这听起来像是为你工作的情况是例外,而不是他们没有的情况。有可能某个方面的人只是不遵守规范。

猜你在找的asp.Net相关文章