没有参数时WCF System.ArgumentNullException

时间:2015-12-16 17:36:17

标签: c# wcf wcf-data-services

我遇到了一个没有参数的WCF服务方法的问题,但是当它被调用时我得到一个System.ArgumentNullException,错误只发生在部署服务时,在Visual Studio上的调试中一切正常。< / p>

请求:

    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <s:Fault>
         <faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:InternalServiceFault</faultcode>
         <faultstring xml:lang="pt-BR">Value cannot be null.
Parameter name: String</faultstring>
         <detail>
            <ExceptionDetail xmlns="http://schemas.datacontract.org/2004/07/System.ServiceModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
               <HelpLink i:nil="true"/>
               <InnerException i:nil="true"/>
               <Message>Value cannot be null.
Parameter name: String</Message>
               <StackTrace>at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer&amp; number, NumberFormatInfo info, Boolean parseDecimal)
   at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
   at XXXX.ExportDailyFile..ctor()
   at XXXX.ExportDailyFile()
   at System.ServiceModel.InstanceContext.GetServiceInstance(Message message)
   at System.ServiceModel.Dispatcher.InstanceBehavior.EnsureServiceInstance(MessageRpc&amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc&amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&amp; rpc)
   at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)</StackTrace>
               <Type>System.ArgumentNullException</Type>
            </ExceptionDetail>
         </detail>
      </s:Fault>
   </s:Body>
</s:Envelope>

答案:

{{1}}

当我使用WCF测试客户端调用时: WCF Test Client

我搜索了很多但找不到答案,我真的需要帮助,谢谢你。

1 个答案:

答案 0 :(得分:0)

XXXX.ExportDailyFile类传递给null时,System.Number.ParseInt32类的构造期间发生异常。这可能是在无参数构造函数中发生的,或者您有一个使用System.Number.ParseInt32初始化的类级别字段。在您的班级中搜索System.Number.ParseInt32,您应该能够确定罪魁祸首。