Код довольно прост: проблема в том, что в строке groupPath есть недопустимый символ (а '/', если быть точным).Зачем это улавливать весь блок, на самом деле не поймать все
Что я пытаюсь сделать (по крайней мере, как разрыв пробела), пропускает DirectoryEntries, что я не могу получить cn для --- независимо от того, почему.
Однако, когда я запускаю этот код, блок 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 приложение, и называют этот же метод с теми же входами подвох блок делает именно то, что он должен делать. Я думаю, это говорит о том, что предлагаемый ответ об исключениях .NET исключений из COM исключен. Хотя я не в порядке, чтобы понять, почему этот код не будет ловить при выполнении с сервера WebDev.
в отладчике или в сборке? –
В какой строке вы получаете исключение? И какой поток? –
Также вы можете добавить исключение? (Exception.ToString()) –