我应该在 MVC 应用程序中缓存 WindowsIdentity 对象吗?如果是这样,最好的方法是什么?

Should I cache a WindowsIdentity object in a MVC app? If so, what's the best way to do it?

我目前正在我的 MVC 应用程序中生成 WindowsIdentity 对象,理想情况下我想缓存它,这样我就不会在每次请求时都访问 AD;问题是我经常遇到异常:"Safe Handle has been closed"

我在某处读到弹出此错误是因为在请求结束后,IIS 关闭了线程主体的句柄(在本例中是我使用缓存 [=19= 实例化的 windows 主体) ] 身份)。

切入点,我应该缓存这个对象吗?缓存令牌是一个更好的主意吗?还是我应该放弃缓存其中任何一个的想法?

提前致谢!

如果您使用 LogonUser 创建 Windows 令牌 - Windows 内核中已经进行了一些优化和缓存。

我不会尝试对其进行优化,正如您已经注意到的那样,您应该将句柄管理留给 OS。