向web服务中的对象列表发送Null

本文关键字:列表 Null 对象 web 服务 | 更新日期: 2023-09-27 18:06:29

我有一个如下所示的web服务;

[Route("/MyService", Verbs = "POST")]
public class MyData     
{
    public string GUID { get; set; }
    public BankDetails BankDetail { get; set; }
    public ContactNameData ContactNames { get; set; }  
    public List<AddressData> Addresses { get; set; }
}
public class AddressData
{
    public string address1 { get; set; }
    public string address2 { get; set; }
    public string address3 { get; set; }
    public string postalCode { get; set; }
    public string city { get; set; }
    public string state { get; set; }
    public string countryCode { get; set; }
}
public class ContactNameData
{
    public string title { get; set; }
    public string firstName { get; set; }
    public string middleName { get; set; }
    public string lastName { get; set; }
}
public class BankDetails
{
    public string sortCode { get; set; }
    public string accountNumber { get; set; }
}
public class My_ServiceStack : Service
{
    [Authenticate]
    public object Post(MyData data)
        {
            // do something here
        }
}

问题是当我需要离开地址列表时。通过为BankDetails对象和ContactNameData对象发送空值可以按预期工作,但通过为List发送空值会给我一个NullExceptionError

我怎样才能解决这个问题,以便我可以通过一个空发送到列表?

向web服务中的对象列表发送Null

如果没有看到抛出异常的具体行,就很难知道发生了什么。

我最好的猜测是你对列表做了一些不允许使用null的事情。NullExceptionError在c#中不存在(除非你为自己定义了这样一个错误),所以我假设你指的是NullReferenceException。当解引用空对象引用时抛出此异常。例如"地址"。Count将抛出这样一个异常,因为Count不能用于不存在的对象。

有几种方法可以解决这些问题;最常见的是在处理列表之前检查是否为空。而不是

int addressCount;
addressCount = Addresses.Count;

你可以直接写

int addressCount = 0;
if (Addresses != null)
     addressCount = Addresses.Count;

要获得更具体的信息,我必须查看您如何处理导致NullReferenceException的列表。

谢谢Nebr。这是一个NullReferenceException错误,我得到的是由web服务内的代码引起的,它正在用地址数据做一些事情。将该代码包装在一个!= null if语句中对问题进行排序。现在可以正常工作了

多谢

尝试发送一个空列表而不是空列表