我正在尝试以下代码
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();
}
}
我在userid中获得的值与我在数据库中的值不同。我究竟做错了什么。我试过MembershipUser user = Membership.GetUser()
但它返回null
注意: 我正在使用配置了asp.net成员资格的Oracle。
修改 用户名在数据库中:161863BC7C244AADBF27F5F6250AF99C
userid var中的用户ID:bc631816-247c-ad4a-bf27-f5f6250af99c
答案 0 :(得分:2)
正如我在评论中提到的,似乎Oracle
以不同的顺序存储用户guid。如果你真的想在数据库中获得相同的guid,你需要一个解决方法。检查this code project article。作者使用了一种方法来翻译guid:
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;
}
但这是未经测试的。作者说
创建了以下方法,解决了我的问题