接收Null参数时在WebService上捕获ArgumentException

时间:2013-09-26 22:36:59

标签: c# web-services validation isnull argumentexception

好的昨天我发布了一些我正在开发的系统问题。我现在遇到的问题是,我正在经历最糟糕的情况并且认为用户以某种方式尝试调用我的Web服务并忘记输入参数,因此Web服务接收空参数...我尝试使用{验证{1}},它仍然给我一个If错误,所以我离开了ArgumentException验证,而是将整个代码放在if中,问题是这个“catch不会进入该代码块,它只是将try-catch放在普通的Web文本上......

这是我的代码:

ArgumentException

我正在尝试做的是获取该错误消息并将其放入我的数据库......事情是它永远不会进入CATCH代码,它会直接发出错误。

希望有人能帮我找到一种方法来捕获或验证这个NULL参数问题并将其粘贴在数据库中

无论如何,谢谢你们。

1 个答案:

答案 0 :(得分:2)

如果要允许用户传递null,则必须使int参数可以为空。更改签名以使用int?而不是int

public string[] M102(int? p_enclosure, string p_transaction, int? p_operation, int? p_commodity,
                      string p_bl, string p_inDate, string p_blhouse, string p_anexo29, int p_tranType,
                      string p_vessel, string p_trip, int? p_entry, string p_padlock, string p_brands, 
                      string p_appoint, string p_plates, string p_qmark)

字符串(和其他引用类型)很好,但任何值类型参数都不能接收空参数,这很可能发生在异常发生的地方。

然后,当处理方法体中的可空参数时,您必须使用HasValue属性测试参数是否具有值并获得实际值,您将必须使用{{1属性。

在方法体内,您必须在每个参数上手动测试Value,如果任何为空的(不应该是整数),则返回错误结果并将其记录在系统中

null