代码非常简单——问题在于groupPath字符串中存在一个无效字符(确切地说是“/”)。
我试图做的事情(至少作为一个临时措施)是跳过我无法获取cn的DirectoryEntries,无论原因如何。
然而,当我运行这段代码时,catch块没有运行,我得到了以下结果: 服务器不可用,并出现未处理的System.Runtime.InteropServices.COMException异常。
为什么catch块没有捕获这个异常?
我试图做的事情(至少作为一个临时措施)是跳过我无法获取cn的DirectoryEntries,无论原因如何。
然而,当我运行这段代码时,catch块没有运行,我得到了以下结果: 服务器不可用,并出现未处理的System.Runtime.InteropServices.COMException异常。
为什么catch块没有捕获这个异常?
try
{
using (DirectoryEntry groupBinding = new DirectoryEntry("LDAP://" + groupPath))
{
using (DirectorySearcher groupSearch = new DirectorySearcher(groupBinding))
{
using (DirectoryEntry groupEntry = groupSearch.FindOne().GetDirectoryEntry())
{
results.Add(string.Format("{0}", groupEntry.Properties["cn"].Value.ToString()));
}
}
}
}
catch
{
Logger.Error("User has bad roles");
}
额外观察: 实际上这段代码在一个自定义的RoleProvider中,有趣的是,如果我在一个简单的winforms应用程序中引用这个提供程序,并使用相同的输入调用这个方法,catch块会按照预期执行。我认为这表明,关于.NET异常与COM异常的提出的答案是不准确的。 虽然我不明白为什么这段代码在从WebDev服务器执行时无法捕获