我应该转换从User.Identity.GetUserId()返回的值以使其成为GUID吗?

时间:2014-07-04 04:17:26

标签: c# asp.net asp.net-identity

我创建了以下类:

public class Config
{
    public Guid UserId { get; set; }
    public string AdminJSON { get; set; }
    public string UserJSON { get; set; }
}

当我查询我正在使用的数据时:

Config config = await db.Configs.FindAsync(User.Identity.GetUserId());

这是进行查找的正确方法吗?似乎User.Identity.GetUserId()返回一个 串。我应该将其转换为返回GUID。

我还有另一个问题:

UserId = User.Identity.GetUserId()   

这也失败了。我试图通过在User.Identity.GetUserId()之前添加(Guid)来进行强制转换但是这会给出一条消息,说明错误1无法将类型'string'转换为'System.Guid'

它出错,因为它不能

2 个答案:

答案 0 :(得分:0)

您需要使用Guid.Parse(User.Identity.GetUserId())或更好的失败证明方法

Guid userId;
bool worked=Guid.TryParse(User.Identity.GetUserId(),out userId);
if(worked) 
{
    //go ahead
}
else 
{
    throw new Exception("Invalid userid"); 
}

答案 1 :(得分:0)

转换为比第三方库交给你的类型更严格的类型似乎是一个坏主意。仅仅因为这个原因,我会将UserId保持为字符串。如果您发现它成为性能问题,您可以随时对其进行优化。

如果您刚开始使用asp.net Identity,我强烈建议您使用默认项目,因为它已经连线。

以下是我刚开始时帮助我的一些文章: