【问题标题】:Value cannot be null Parameter name: source值不能为空参数名称:source
【发布时间】:2014-10-29 03:13:09
【问题描述】:

我正在使用以下方法的网络服务:

wsSascar2.SasIntegraWSClient w2 = new wsSascar2.SasIntegraWSClient();
List<wsSascar2.pacotePosicao> lista = w2.obterPacotePosicoes("user", "password", 0).ToList();

但是返回如下错误:

值不能为空。参数名称:来源

问题出在我的代码还是webservice的返回?

网络服务:http://sasintegra.sascar.com.br/SasIntegra/SasIntegraWSService?wsdl

谢谢,

【问题讨论】:

    标签: c# web-services visual-studio webservice-client


    【解决方案1】:

    obterPacotePosicoes 的返回值为 null。尝试使用?? 运算符并提供默认的空数组。

    List<wsSascar2.pacotePosicao> lista = 
        (w2.obterPacotePosicoes("user", "password", 0) 
        ?? new wsSascar2.pacotePosicao[0])
            .ToList();
    

    由于ToList 不能接受源参数的空值。

    ArgumentNullException 源为空。

    【讨论】:

    • 感谢您的高效响应。帮助很大,我认为这就是问题所在。我会联系网络服务负责人。
    • 这里有一些 linq 代码示例,它们会给你一个参数空异常:
    • List&lt;Myobj&gt; myList = null; //from this point on, any linq statement you perform on this object will throw an argument null exception: myList.ToList(); myList.GroupBy(m =&gt; m.Id); myList.Count(); myList.Where(m =&gt; m.Id == 0); myList.Select(m =&gt; m.Id == 0); //etc...
    【解决方案2】:

    我认为服务返回 null。 试试下面的代码

    wsSascar2.SasIntegraWSClient w2 = new wsSascar2.SasIntegraWSClient();
    List<wsSascar2.pacotePosicao> lista  = new List<wsSascar2.pacotePosicao>(); 
    var result = w2.obterPacotePosicoes("user", "password", 0);
    if(result != null)
       lista  = result.ToList(); 
    

    【讨论】:

    • 感谢您的高效响应。帮助很大,我认为这就是问题所在。我会联系网络服务负责人。
    【解决方案3】:

    我刚刚遇到一个案例,在 WPF 应用程序下使用 Web 服务时出现“值不能为空”。

    最终,释放一些磁盘空间后,此类错误消失,通过填充磁盘进行双重验证,再次抛出相同的错误。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 2014-05-17
      • 2016-05-14
      • 2015-11-05
      相关资源
      最近更新 更多