Ваша ошибка происходит из-за этой строки:
string authenticate = (string)data.authenticate(UserName, password);
Вы устанавливаете аутентификацию равной вычислению истина / ложь, которое возвращает логическое значение. Попробуйте вместо этого.
string authenticate = data.authenticate(UserName, password).ToString();
Вы также можете изменить код, чтобы он по-прежнему возвращал строку, выполнив это:
bool authenticate = data.authenticate(UserName, password);
return authenticate.ToString();
ПРЕДПОЧТИТЕЛЬНЫЙ ВАРИАНТ:
Кроме того, я не уверен, почему вы возвращаете строковое представление true / false (bool) ... Если бы это была моя функция, я бы, вероятно, вернул это :
return data.authenticate(UserName, password);
Я бы настоятельно рекомендовал вам просто вернуть логическое значение в области ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ. Нет очевидных причин сохранять это в строковом формате.