2013-05-21 3 views
0

У меня есть образец веб-метод на мои услуги,Проверьте целочисленное значение на ASMX

<WebMethod()> _ 
Public Function AddThis(ByVal x As Integer, ByVal y As Integer) As Integer 

    Dim mySum As Integer 

    If Not IsNumeric(x) Then 
     Return 0 
    End If 
    mySum = x + y 
    Return mySum 

End Function 

, когда я его отладки, suddnely я сделал ошибку о х или у значения, и это дает мне ошибку:

System.ArgumentException: Невозможно преобразовать gf в System.Int32. Имя параметра: type ---> System.FormatException: строка ввода не была в правильном формате.

я пытаюсь проверить значение:

If Not IsNumeric(x) Then 
      Return 0 
     End If 

, но получаю сообщение об ошибке, можно проверить значение, прежде чем запускать службы?

+0

В основном вы получаете сообщение об ошибке, потому что вы передаете другой тип, когда предполагается передать целочисленный тип. Если вы хотите, вы можете изменить свой тип параметра на строку и преобразовать его в целое число в свой код. – hallie

ответ

1

В момент, когда вы проверяете «IsNumeric (x)», X всегда будет числовым. Вы ожидаете, что Integer будет параметром, поэтому ошибка произойдет в тот момент, когда вы вызываете функцию AddThis.

Перед вызовом этой функции вам нужно будет проверить X и Y. Или, если это невозможно, используйте что-то вроде этого:

Public Function AddThis(ByVal x As String, ByVal y As String) As Integer 

    Dim mySum As Integer 

    If Not IsNumeric(x) Or Not IsNumeric(y) Then 
     Return 0 
    End If 
    mySum = Integer.Parse(x) + Integer.Parse(y) 
    Return mySum 

End Function 
+0

ладно, получилось, но мне все же любопытно, можно ли сохранить параметр как целое? – Sabilv

+0

Да, это возможно. Вам нужно будет сделать чек «IsNumeric», прежде чем вы назовете «AddThis (x, y)» –

+0

oh okay, поэтому тот, кто пользуется моими услугами, должен сделать это, спасибо. – Sabilv

Смежные вопросы