Membership.GetUser (имя пользователя) - как вернуть правильный корпус?
-
05-07-2019 - |
Вопрос
Я получаю имя пользователя по URL, так что blah.com/kevinuk.
Я хочу, чтобы некоторое содержимое на странице сообщало KevinUK, что хранится в таблице членства, но когда я делаю следующее, он возвращает тот же регистр, что и входные данные.
MembershipUser member = Membership.GetUser(user);
string userName = member.UserName;
Как использовать строчное имя пользователя в качестве параметра и вернуть значение из базы данных с правильным регистром?
Решение
Непонятно, какой поставщик членства вы используете, но вы можете легко отказаться от него и переопределить метод GetUser.
Создайте класс, который унаследован от класса MembershipProvider. Р>
public class MyMembershipProvider : MembershipProvider
{
public MyMembershipProvider()
{
//
// TODO: Add constructor logic here
//
}
}
Переопределите метод getUser.
public override MembershipUser GetUser(string username, bool userIsOnline)
{
... Logic here to do a case insensitive lookup...
}
Наконец, обновите веб-конфигурацию для использования вашего нового провайдера:
<system.web>
<membership defaultProvider="MyMembershipProvider" userIsOnlineTimeWindow="10">
<providers>
<add name="MyMembershipProvider" type="Providers.FIFAMembershipProvider" connectionStringName="ADConnectionString" ... />
</providers>
</membership>
</system.web>
Некоторые примеры:
http://msdn.microsoft.com/ ан-нас / библиотека / ms366730 (VS.80) .aspx
Другие советы
К сожалению, метод Membership.GetUser (string username)
просто устанавливает для имени пользователя MembershipUser
значение переданного параметра. Чтобы получить правильный регистр, вам нужно либо использовать Membership.GetUser (object providerUserKey)
, который принимает GUID пользователя, либо переопределить прежний метод и соответствующую ему хранимую процедуру, чтобы вернуть корректный регистр имя пользователя.
Или вы можете просто сделать взаимный вызов двух разных методов GetUser ()
, но это довольно расточительно.
Запутался в той же проблеме и попробовал вышеуказанное решение = Самый простой способ получить правильный корпус:
var user = Membership.GetUser(userName.Text);
user = Membership.GetUser(user.ProviderUserKey);
var correctCasing = user.UserName;