Guid 应包含 32 位数字和 4 个破折号 (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) 和有效的 c# 构造函数
Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) with valid c# constructor
var username = User.FindFirst(ClaimTypes.Email)?.Value;
var userid = new Guid(username);
为什么这会导致出现 Guid FormatException?
Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
Guid 的构造函数允许我传入一个字符串,我传入了一个字符串,所以它应该可以工作!
错误消息确实说明了一切 - Guid
的构造函数不接受任何奇数字符串,它需要一个非常特定格式的字符串 - “32 位数字和 4 个破折号 (xxxxxxxx-xxxx- xxxx-xxxx-xxxxxxxxxxxx)”,例如“12345678-1234-1234-1234-12345678”。
那是因为索赔电子邮件包含电子邮件而不是对象 GUID。检查声明包含 GUID 的调试器。通常 NameIdentifies
是您要搜索的声明:
User.FindFirst(ClaimTypes.NameIdentifier)
var username = User.FindFirst(ClaimTypes.Email)?.Value;
var userid = new Guid(username);
为什么这会导致出现 Guid FormatException?
Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
Guid 的构造函数允许我传入一个字符串,我传入了一个字符串,所以它应该可以工作!
错误消息确实说明了一切 - Guid
的构造函数不接受任何奇数字符串,它需要一个非常特定格式的字符串 - “32 位数字和 4 个破折号 (xxxxxxxx-xxxx- xxxx-xxxx-xxxxxxxxxxxx)”,例如“12345678-1234-1234-1234-12345678”。
那是因为索赔电子邮件包含电子邮件而不是对象 GUID。检查声明包含 GUID 的调试器。通常 NameIdentifies
是您要搜索的声明:
User.FindFirst(ClaimTypes.NameIdentifier)