Membership.GetUser (имя пользователя) - как вернуть правильный корпус? - PullRequest
4 голосов
/ 16 июня 2009

Я получаю имя пользователя с URL, поэтому blah.com/kevinuk.

Я хочу, чтобы на некотором контенте на странице было написано KevinUK, что хранится в таблице членства, но когда я делаю следующее, он возвращает тот же регистр, что и входные данные.

MembershipUser member = Membership.GetUser(user);
string userName = member.UserName;

Как использовать строчное имя пользователя в качестве параметра и вернуть значение из базы данных с правильным регистром?

Ответы [ 3 ]

2 голосов
/ 16 июня 2009

К сожалению, метод Membership.GetUser(string username) просто устанавливает для имени пользователя MembershipUser значение переданного параметра. Чтобы получить правильный регистр, вам нужно будет либо использовать Membership.GetUser(object providerUserKey), который принимает GUID пользователя, либо переопределить прежний метод и соответствующую хранимую процедуру, чтобы вернуть правильно введенное имя пользователя.

Или вы могли бы просто сделать взаимный вызов двум различным GetUser() методам, но это довольно расточительно.

1 голос
/ 16 июня 2009

Непонятно, каким провайдером членства вы пользуетесь, но вы можете легко выйти из него и переопределить метод 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://www.eggheadcafe.com/tutorials/aspnet/30c3a27d-89ff-4f87-9762-37431805ef81/aspnet-custom-membership.aspx

http://msdn.microsoft.com/en-us/library/ms366730(VS.80).aspx

0 голосов
/ 14 апреля 2016

Остановился на той же проблеме и попробовал вышеуказанное решение = Самый простой способ получить правильный корпус:

var user = Membership.GetUser(userName.Text);
user = Membership.GetUser(user.ProviderUserKey);
var correctCasing = user.UserName;
...