Создание каталогов в среде среднего доверия?

У меня есть веб-приложение ASP.NET, работающее в среде среднего доверия с провайдером общего хостинга. Следующий код вызывает исключение SecurityException:

private void TestButton_Click(object sender, EventArgs e)
{
    string directory = Server.MapPath("~/MyFolder/") + "_TestDirectory";
    if (!Directory.Exists(directory))
        Directory.CreateDirectory(directory);
}

Полный текст ошибки:

System.Security.SecurityException: запрос на разрешение типа "System.Security.Permissions.FileIOPermission, mscorlib, версия =2.0.0.0, Culture= нейтральный, PublicKeyToken=b77a5c561934e089" не выполнен.
   в System.Security.CodeAccessSecurityEngine.Check(требование объекта, StackCrawlMark& ​​stackMark, логическое значение isPermSet)
   в System.Security.CodeAccessPermission.Demand()
   в System.IO.Directory.InternalCreateDirectory(String fullPath, String path, DirectorySecurity dirSecurity)
   в System.IO.Directory.CreateDirectory(Строковый путь, DirectorySecurity directorySecurity)
   в ASP.testcreatedirectory_aspx.TestButton_Click(Отправитель объекта, EventArgs e)
Действие, которое не удалось, было:
требовать
Тип первого разрешения, которое не удалось:
System.Security.Permissions.FileIOPermission
Зона сборки, которая провалилась, была:
Мой компьютер

Папка, в которой создается подпапка, имеет полные разрешения, поэтому я не думаю, что это проблема. Это похоже на работу с средой доверия.

Является ли нормальным для сред со средним доверием нормальное запрещение создания новых каталогов (с помощью метода Directory.Create), и / или есть ли обходной путь для этого?

1 ответ

Пока путь, к которому вы пытаетесь получить доступ, находится в виртуальном каталоге, в котором находится ваше приложение, вы должны иметь доступ к нему в Medium Trust. Вы уверены, что у вашего приложения есть разрешение на создание папки?

http://msdn.microsoft.com/en-us/library/aa302425


Изменить: я мог прочитать документ выше неправильно. Посмотрите и эту ссылку, похоже, у вас есть только разрешения на чтение, запись, добавление и обнаружение пути:(

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

http://msdn.microsoft.com/en-us/library/ff648344.aspx

Другие вопросы по тегам