2013-02-10 2 views
1

Я пытаюсь следующий кодProviderUserKey возвращения неправильно ключ

ASPX:

Username: <br /> 
<asp:TextBox runat="server" ID="txtUserName"></asp:TextBox> 
<br /> 
Password: <br /> 
<asp:TextBox runat="server" ID="txtPassword" TextMode="Password"></asp:TextBox> 
<br /> 
<asp:Button runat="server" ID="btnLogin" Text="Login" onclick="btnLogin_Click"/> 

код позади:

protected void btnLogin_Click(object sender, EventArgs e) 
{ 
    if(!string.IsNullOrEmpty(txtUserName.Text.Trim()) && !string.IsNullOrEmpty(txtPassword.Text.Trim())) 
    { 
     string username = txtUserName.Text.Trim(); 
     string password = txtPassword.Text.Trim(); 
     if (Membership.ValidateUser(username, password)) 
     { 
      MembershipUser user = Membership.GetUser(username); 
      string userid = user.ProviderUserKey.ToString(); 
     } 
} 

Значение, которое я получаю в идентификатор пользователя отличается от того, что я имею в база данных. Что я делаю не так. Я пробовал MembershipUser user = Membership.GetUser(), но он возвращает null

Примечание: Я использую Oracle с настройкой членства asp.net.

Edit: Userid в базе данных: 161863BC7C244AADBF27F5F6250AF99C

Userid в иденте варе: bc631816-247c-ad4a-bf27-f5f6250af99c

+1

Я думаю, что его что-то делать с тем, как Oracle хранения данных. Проверьте [этот ответ] (http://stackoverflow.com/a/5447244/799558) – AbZy

+0

Спасибо, я думаю, это и есть причина. – ZedBee

ответ

2

Как я уже говорил в моем комментарии, кажется, Oracle хранит пользователь guid в другом порядке. если вы действительно хотите получить тот же самый указатель в базе данных, вам необходимо обходное решение. Проверьте this code project article. Автор использовал метод перевода направляющей:

public static string TranslateOraceEndianUserID() 
    { 
     MembershipUser myObject = Membership.GetUser(); 
     Guid g = new Guid(myObject.ProviderUserKey.ToString()); 
     byte[] b = g.ToByteArray(); 
     string UserID = BitConverter.ToString(b, 0).Replace("-", string.Empty); 
     return UserID; 
    } 

Это непроверено. автор говорит

следующий метод был создан, который решает проблему для меня

+0

, и это решило мою проблему http://stackoverflow.com/a/7245900/1099235 – ZedBee

+0

@ZedBee Ответчик - тот же автор статьи :). Я не заметил ответа в ссылке, которую я дал вам раньше – AbZy

+0

:) теперь оказался в ловушке другой проблемы. Поскольку я сохраняю идентификатор пользователя в одной из моих таблиц .. прямое сохранение идентификатора пользователя дает проблему. Интересно, должен ли я преобразовать его обратно в формат оракула. – ZedBee

Смежные вопросы