Я пытаюсь получить информацию из базы данных MS SQL на основе имени участника-пользователя, вошедшего в систему.Я полагаю, что для некоторых это выглядит несколько тривиально.
В контроллере я получаю UPN пользователя:
var identity = (ClaimsIdentity)User.Identity;
loggedInUser.UserHandle = identity.Claims.Where(c => c.Type == ClaimTypes.Upn).First().Value;
//get userHandle from UPN
int index = loggedInUser.UserHandle.LastIndexOf("@");
if (index > 0)
loggedInUser.UserHandle = loggedInUser.UserHandle.Substring(0, index);
Ниже я пытаюсь получить данные:
String sql = "Select * from [MyDatabase].[dbo].[TableName] where UserHandle = @userHandle";
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add(new SqlParameter("userHandle", loggedInUser.UserHandle));
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
user.FirstName = reader["FirstName"].ToString();
user.LastName = reader["LastName"].ToString();
}
conn.Close();
}
return View(loggedInUser);
Я вижу правильный UserHandle в View, используя @ Model.UserHandle.Но он возвращает ноль в Controller, поэтому я не могу получить firstName и LastName из таблицы.
Что я делаю не так?Как я могу получить значение UPN для использования в моей строке SQL, чтобы я мог получить данные из таблицы?