将Null发送到Web服务中的对象列表

时间:2016-09-09 22:31:03

标签: c# list web-services servicestack

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

[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

如何解决这个问题,以便我可以通过null发送给List?

3 个答案:

答案 0 :(得分:1)

如果没有看到引发异常的具体行,很难说是发生了什么。

我最好的猜测是你对列表做了一些不允许使用null的东西。 C#中不存在NullExceptionError(除非您为自己定义了这样的错误),因此我假设您的意思是NullReferenceException。取消引用空对象引用时抛出此异常。例如,Addresses.Count将抛出此类异常,因为Count不能用于不存在的对象。

有几种方法可以解决这些问题;最常见的是在使用列表之前检查null。而不是

int addressCount;
addressCount = Addresses.Count;

你只需写

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

有关更具体的信息,我将不得不看看你对导致NullReferenceException的列表做了什么。

答案 1 :(得分:1)

谢谢Nebr。这是一个NullReferenceException错误,我正在获取并且是由Web服务中的代码引起的,该代码正在使用Address数据执行某些操作。将该代码包装在!= null if语句中对问题进行排序。它现在按预期工作

非常感谢

答案 2 :(得分:0)

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