加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 00:39:58 所属栏目:asp.Net 来源:网络整理
导读:我已经使用发送到ASP.NET 2.0 ASMX Web服务的JSON请求(使用AJAX Extensions 1.0 for ASP.NET 2.0)完成了以下测试,似乎在某些情况下,区分大小写很重要,但在其他情况下却非常重要。请参见以下示例: 案例匹配100%: {"request":{"Address":{"Address1":"12
我已经使用发送到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.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读