1

我正在使用 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 中是否有一些我可以清除的缓存?

4

0 回答 0