xbap изящно справляется с отсутствием разрешений - PullRequest
1 голос
/ 05 августа 2009

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

Я полностью доверял приложению, подписал его действительным сертификатом и импортировал сертификат в ie, и xbap отлично работает.

Моя проблема заключается в том, что я хочу корректно обработать исключение «Отказ в разрешении», если у пользователя нет установленного сертификата, т. Е. Нет доступа к файловой системе

Я думал, что смогу добиться этого, запустив 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 выдает общий экран ошибки «Доверие не предоставлено»… которого я не хочу, я хочу показать моим пользователям правильный экран ошибок, который объясняет, что они могут сделать, чтобы исправить эту ошибку

есть идеи?

1 Ответ

0 голосов
/ 21 сентября 2009

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

...