在 C# 中使用 DirectoryEntry 进行 WMI 调用时,似乎缓存了故障,因此重试立即失败而无需重试。
这是我为重现这一点所做的工作:
DirectoryEntry directoryEntry = new DirectoryEntry();
directoryEntry.AuthenticationType = AuthenticationTypes.Secure;
directoryEntry.Username = connectUsername;
directoryEntry.Password = connectPassword;
directoryEntry.Path = "WinNT://" + connectServerName + ",computer";
newUser = directoryEntry.Children.Add(userName, "user");
- 调用防火墙阻止连接的 VM。
- 这将需要一段时间,然后它会失败并显示“找不到网络路径”
- 但是,如果我启用防火墙规则并重试,WMI 将立即抛出相同的网络路径错误。
- 只有在等待(我现在不确定,但几分钟)之后,我才能重试,它会注意到网络正在工作。
该代码位于 WCF 服务中,其中每个调用对于所有内容的新实例都应该是新鲜的。
关于缓存发生在哪里以及如何确保新的 DirectoryEntry 进行新调用的任何想法?
更新:我刚刚尝试了 iisreset(站点和 Web 服务)并且缓存仍在发生。然后我重新启动了Windows Management Instrumentation服务,然后它进行了新的未缓存调用。所以这让我意识到问题不在于 C#/WCF 代码或网络,而在于 WMI。任何想法如何强制 WMI 进行新的未缓存调用?