получение системы.Обработка потоков.Задачи.Ошибка задачи`1[System.Int32]

#asp.net-mvc #async-await

#asp.net-mvc #асинхронное ожидание

Вопрос:

я пытаюсь преобразовать свой код в sync, но когда я запускаю его, я получаю в одном из своих переменных значение «System.Обработка потоков.Задачи.Задача `1[System.Int32]» вместо ожидаемого ответа

я прочитал большинство тех же вопросов, что и в этой теме, но ни один из них не помог мне решить проблему, я пытался правильно использовать await, но это не помогло

 public async Task<int> userloginAsync(string name,string pass)
        {
            using (SqlConnection con = new SqlConnection(@"/////:P//////"))
            {
                using (SqlCommand cmd = new SqlCommand("UserLoginPro"))
                {
                    cmd.Connection = con;
                    cmd.CommandText = "SELECT count(id) FROM user_table where name =@name and password =@password; ";
                    cmd.Parameters.AddWithValue("@name", name);
                    cmd.Parameters.AddWithValue("@password", pass);
                 await   con.OpenAsync();
                    var ans1 = await cmd.ExecuteScalarAsync();
                    var ans = ans1.ToString();
                    con.Close();
                    int res = Convert.ToInt32(ans);
                    con.Close();
                    return res;
                }

            }

        }
  

он должен запросить mssql, если есть совпадение с входными данными (имя пользователя и пароль)
и если есть возврат 1
если не 0
(в базе данных есть уникальные имена пользователей, поэтому оно может быть только одним)

Комментарии:

1. Однако вы не упомянули, в какой строке или переменной возникает эта ошибка, я думаю, что это наиболее вероятно, var ans = ans1.ToString(); если да, то используйте await перед ToString(); преобразованием, например var ans = ans1.ToString();

2. это переменная с именем ‘ans1’

3. когда я пытаюсь добавить await, он говорит, что ‘string’ не содержит определения для ‘GetAwaiter’ и недоступен для методов… (я пробовал оба из них. 1. ожидание изменения ans = ans1. toString(); а также. var ans = ожидает ans1. toString(); ) а также

4. string не является ожидаемым типом. Чего вы ожидали достичь, ожидая ToString() ?

5. я делаю это после того, как увидел в одном из других ответов на вопрос, что это может решить проблему, о которой я упоминал изначально, мой код был таким « await con. OpenAsync(); var ans1 = ожидает cmd. ExecuteScalarAsync(); var ans = ans1. toString(); кон. Close(); « и это приводит к возвращению переменной ans System. Обработка потоков. Задачи. Задача`1[System.Int32]