gpt4 book ai didi

c# - 为什么 UserPrincipal.FindByIdentity 会返回有关 GUID 为 32 位的错误?

转载 作者:太空狗 更新时间:2023-10-30 00:15:27 29 4
gpt4 key购买 nike

我的应用程序使用 UserPrincipal 类来确定用户属于哪些组,然后使用该信息来确定用户是否经过身份验证可以使用我的应用程序。有一段时间一切正常,但最近我开始遇到异常

Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)

调用 UserPrincipal.FindByIdentity 时。看起来调用成功并且异常处理正确,但让我担心的是将来身份验证会突然中断。我没有在任何地方明确创建 GUID,所以我不知道异常来自哪里。

最佳答案

很可能是在框架代码的某个深处抛出了一个异常,它试图从一个无效的 GUID 值初始化某种安全描述符。如果框架正在捕获它并在内部处理它,我就不会担心它。

通过框架代码进行追踪,这里是一个可能发生的地方:

protected static bool IdentityClaimToFilter(string identity, string identityFormat, ref string filter, bool throwOnFail)
{
if (identity == null)
identity = "";
StringBuilder filter1 = new StringBuilder();
switch (identityFormat)
{
case "ms-guid":
Guid guid;
try
{
guid = new Guid(identity);
}
catch (FormatException ex)
{
if (throwOnFail)
throw new ArgumentException(ex.Message, (Exception) ex);
else
return false;
}
...

请注意,它尝试创建一个新的 Guid,如果失败,则会抛出异常,但代码会忽略它并只返回 false

关于c# - 为什么 UserPrincipal.FindByIdentity 会返回有关 GUID 为 32 位的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14386297/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com