пятница, мая 22, 2009

Горе от ума

Неплохой набор средств для изготовления РП в Sharepoint Designer содержит, в частности, средства для манипуляций разрешениями на элементы списков (библиотек). Эти средства вполне успешно были применены в проекте год назад, однако при попытке использовать их на сервере комьюнити выяснилось, что назначение разрешений работает только в случае Windows-пользователей. Для пользователей с LiveID-аутентификацией назначение разрешений заканчивается ошибкой smile_omg.

Причина обнаружилась в фрагменте кода, выполняющем поиск пользователя по имени.

if (SPUtility.IsLoginValid(site, userOrGroup)) {
myUser = site.RootWeb.EnsureUser(userOrGroup);
}

Понятно, что авторы при помощи метода IsLoginValid пытались избавиться от обработки исключений smile_shades, но в Шарепойнте так много действий построено на обработке исключений, что эта попытка выглядит ловлей мелких насекомых. Хуже того, IsLoginValid, похоже, не находит LiveID-пользователей вовсе smile_baringteeth. Выяснилось, что вполне можно было обойтись и без этого метода:

try {
myUser = site.RootWeb.EnsureUser(userOrGroup);
} catch {}

В этом случае оба типа пользователей благополучно находятся и весь процесс назначения разрешений работает как ожидалось. thumbs_up

Technorati Tags: ,

Отправить комментарий