Неплохой набор средств для изготовления РП в Sharepoint Designer содержит, в частности, средства для манипуляций разрешениями на элементы списков (библиотек). Эти средства вполне успешно были применены в проекте год назад, однако при попытке использовать их на сервере комьюнити выяснилось, что назначение разрешений работает только в случае Windows-пользователей. Для пользователей с LiveID-аутентификацией назначение разрешений заканчивается ошибкой .
Причина обнаружилась в фрагменте кода, выполняющем поиск пользователя по имени.
if (SPUtility.IsLoginValid(site, userOrGroup)) {
myUser = site.RootWeb.EnsureUser(userOrGroup);
}
Понятно, что авторы при помощи метода IsLoginValid пытались избавиться от обработки исключений , но в Шарепойнте так много действий построено на обработке исключений, что эта попытка выглядит ловлей мелких насекомых. Хуже того, IsLoginValid, похоже, не находит LiveID-пользователей вовсе . Выяснилось, что вполне можно было обойтись и без этого метода:
try {
myUser = site.RootWeb.EnsureUser(userOrGroup);
} catch {}
В этом случае оба типа пользователей благополучно находятся и весь процесс назначения разрешений работает как ожидалось.