C# ProviderUserKey返回错误的密钥
我正在尝试以下代码 aspx: 我在userid中得到的值与我在数据库中得到的值不同。我做错了什么。我尝试了C# ProviderUserKey返回错误的密钥,c#,asp.net,oracle11g,asp.net-membership,C#,Asp.net,Oracle11g,Asp.net Membership,我正在尝试以下代码 aspx: 我在userid中得到的值与我在数据库中得到的值不同。我做错了什么。我尝试了MembershipUser=Membership.GetUser(),但它返回null 注: 我正在使用配置了asp.net成员资格的Oracle 编辑: 数据库中的用户ID:161863BC7C244AADBF27F5F6250AF99C Userid var:bc631816-247c-ad4a-bf27-f5f6250af99c中的Userid正如我在评论中提到的那样,似乎Orac
MembershipUser=Membership.GetUser()
,但它返回null
注:
我正在使用配置了asp.net成员资格的Oracle
编辑:
数据库中的用户ID:161863BC7C244AADBF27F5F6250AF99C
Userid var:bc631816-247c-ad4a-bf27-f5f6250af99c中的Userid正如我在评论中提到的那样,似乎Oracle以不同的顺序存储用户guid。如果确实希望在数据库中获得相同的guid,则需要解决方法。检查。作者使用了一种方法来转换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;
}
这是未经测试的。作者说
创建了以下方法,为我解决了该问题
我认为这与Oracle存储数据的方式有关。检查谢谢,我想这就是原因。这解决了我的问题@ZedBee回答者是文章的同一作者:)。我没有注意到我之前给你的链接中的答案:)现在陷入了另一个问题。因为我正在将userid保存到我的一个表中。。直接保存用户ID会带来问题。想知道我是否应该将它转换回oracle格式。@ZedBee也许你不应该首先翻译它?哈哈。。是的,我意识到这是一个错误的问题:)
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();
}
}
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;
}