我正在使用 NetUse 创建与 UNC 路径的连接以枚举目录。之后,NetUseDelete,我需要未经授权的异常立即开始发生。目前,似乎 NetUseDelete 的效果已被删除,至少在 .NET 中是这样。以下单元测试演示了应该发生的事情。
// delete every net connection to ensure clean test
var share = @"\\234.234.234.234\share";
var username = "user...";
var password = "password...";
// to begin with, access should be denied
Assert.Throws<UnauthorizedAccessException>(() => new DirectoryInfo(share).GetDirectories());
// the using statement calls NetUseDel when the connection is disposed off.
using (var connection = _networkBrowserService.GetUncConnection())
{
// calls NetUse
if (connection.NetUseWithCredentials(share, username, null, password))
{
// succeeded!
// this should not throw an error!
new DirectoryInfo(share).GetDirectories();
}
else
{
Assert.Fail("Couldn't authenticate username/password");
}
}
// now that we disposed our connection, we should get access denied again
Assert.Throws<UnauthorizedAccessException>(() => new DirectoryInfo(share).GetDirectories());
最后一个 Assert 失败,因为 GetDirectories() 没有抛出错误。
如果我设置断点并稍等片刻,GetDirectories() 将按预期抛出异常。
我检查了“网络使用”,当 GetDirectories() 通过时没有建立连接,这是不正确的。如果“net use”显示没有连接,GetDirectories() 应该会失败。
有任何想法吗?.NET 中是否有一些我可以清除的缓存?