#asp.net #string-comparison
#asp.net #сравнение строк
Вопрос:
У меня есть фрагмент кода, который определяет, является ли зарегистрированный пользователь участником или нет. По какой-то причине — даже если в коллекции ролей есть «Член» — код достигает конечного оператора return.
Это событие встречается редко — и точные обстоятельства каждый раз разные (обновление web.config иногда / очистка asp.net временные файлы иногда) —
private bool isLoggedInUserMember()
{
string[] Roles = { "Member", "Professional" }; //In real code - this is pulled from the db
foreach (string role in Roles)
{
if (role.Trim().ToLower().Equals("member"))
return true;
}
return false; //sometimes the code reaches here
}
Итак, мой вопрос — знаете ли вы о каких-либо ошибках .net, которые возникают при использовании Trim().ToLower() или любая такая последовательность?
Это ASP.Net Приложение веб-сайта, работающее на платформе 3.5
Спасибо!
Комментарии:
1. Добавьте некоторый код протоколирования, чтобы увидеть, что
Roles
равно в производстве. Скорее всего, это не «Член».2. Также используйте
StringComparison.OrdinalIgnoreCase
вместоToLower
для выполнения сравнения строк без учета регистра.