xbap изящно справляется с отсутствием разрешений

У меня есть приложение Xbap, которое является частью приложения интрасети, которому требуется доступ к файловой системе.

Я установил полное доверие к приложению, подписал его действующим сертификатом и импортировал сертификат в IE, и xbap работает отлично.

Моя проблема заключается в том, что я хочу изящно обрабатывать исключение Permission Denied, если у пользователя не установлен сертификат, то есть у него нет доступа к файловой системе IO.

Я думал, что смогу добиться этого, запустив xbap в режиме частичного доверия и используя что-то вроде следующего для проверки разрешений

CodeAccessPermission p = new FileIOPermission(FileIOPermissionAccess.Write, @"c:\newfile.txt");

try
{
    p.Demand();
    // Has access
}
catch (Exception ex)
{
    // Does not have access
}

Проблема, однако, в том, что приведенный выше код всегда будет терпеть неудачу, если вы не добавили разрешение FileIOPermissions в список «Разрешения, необходимые для приложения» на вкладке безопасности окна свойств вашего проекта ... даже если вместо этого запускать из вашей локальной файловой системы через веб-сервер.

НО

Если я добавлю разрешение FileIOPermissions, а у пользователя нет установленного сертификата, ни один из моих кодов не будет запущен, и xbap выдаст общий экран с ошибкой «Доверие не предоставлено» ... которого я не хочу, я хочу показать у моих пользователей правильный экран ошибки, который объясняет, что они могут сделать, чтобы исправить эту ошибку

Любые идеи?


person Lightweight    schedule 05.08.2009    source источник


Ответы (1)


Вы можете вручную отредактировать файл app.manifest, чтобы запросить более низкие минимальные разрешения для вашего приложения, и тогда (теоретически) ваш тестовый код не всегда будет терпеть неудачу, когда вы запрашиваете разрешение на файл, но, как предполагалось, потерпит неудачу только тогда, когда пользователь не предоставил ваш код необходимые разрешения.

person Alex Shnayder    schedule 21.09.2009