WindowsIdentity.RunImpersonated 出现错误

作者: mriehm创建于 2022年1月24日更新于 2022年4月11日

在《异步指南》中阅读 WindowsIdentity.RunImpersonated 示例时,似乎存在两个错误: 1. 每个代理都定义为接受一个 context 参数。但是,RunImpersonated 不接受带参数的任何代理。它只接受 ActionFunc<T>Func<Task>Func<Task<T>> 对于 RunImpersonatedAsync),那么为什么示例中有这个 context 参数? 2. 第一个 BAD 示例似乎是不正确的。它指出:“此示例尝试以异步方式执行查询,然后在调用 RunImpersonated 之外等待查询完成。这会抛出异常,因为查询可能在假冒上下文之外执行。”然而,该示例代码实际上没有任何功能问题。实际上,它在语义上等同于第一个 GOOD 示例,我们可以通过查看所谓的 BAD 示例与第一个 GOOD 示例运行时对 RunImpersonated 方法的实现 相匹配来确认这一点。

内容来源: davidfowl/AspNetCoreDiagnosticScenarios