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