#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]