繁体   English   中英

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

[英]When is case sensitivity important in JSON requests to ASP.NET web services (ASMX)?

我已经使用发送到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

  • 包含的对象名称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 Service请求中的区分大小写何时重要? 此外,这是一般的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规范 ,答案总是如此。

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

符合实现必须将过程和参数名称视为区分大小写,例如名称栏和BAR将被视为两个不同的实体。

所以,听起来像它适用于你的情况是例外,而不是它们没有的情况。 有些人可能只是不遵守规范。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM