Сохраните файл в папку на веб-сайте со средним уровнем доверия в ASP.NET

На своем веб-сайте я сохраняю изображения в папку (Фото) в коде позади, вызывая

ImageUploadControl.PostedFile.SaveAs(HttpContext.Current.Server.MapPath("~/Photos/" + Name + ext));

который выдает ошибку 'Access not allowed' в среднем доверии. Есть ли альтернатива для сохранения изображений со средним доверием? Эта папка должна быть общедоступной, так как клиенты получают доступ к этим изображениям без какой-либо аутентификации, поэтому я не могу сохранить ее в App_Data(одно решение этой проблемы)

* Сайт размещен на общем плане hostgator. Существует ограничение на то, сколько я могу попросить конфигурации сервера.

РЕДАКТИРОВАТЬ:

Да, это проблема доступа, так как разрешение виртуальных путей не разрешено. Я надеюсь, что у кого-нибудь есть решение этой проблемы.

2 ответа

Решение

Учитывая, что вы используете собственный элемент управления.NET, я думаю, что это больше связано с разрешениями файловой системы, чем с доверием среды. Если бы вы использовали сторонний контроль, я бы сказал, что это проблема доверия.

Беглый взгляд на Hostgator, они используют cPanel, оттуда есть раздел файлового менеджера, и здесь, если вы идете и выбираете 'Photos' папку и выберите "Изменить разрешения", здесь убедитесь, что папка имеет доступ для записи из приложения.

редактировать


Статья поддержки для установки *nix-разрешений: https://support.hostgator.com/articles/cpanel/how-to-change-permissions-chmod-of-a-file

И: https://support.hostgator.com/articles/specialized-help/technical/my-script-needs-to-use-777-permissions

Хорошо, так как это проблема пути:

https://support.hostgator.com/articles/hosting-guide/lets-get-started/server-path-absolute-path

Это работает ASP.NET на * NIX Box? Или это работает на Windows Server и IIS?

Кроме того, я думаю, что вам может понадобиться пересмотреть свой код в этом случае:

string pathRoot = HttpContext.Current.Server.MapPath("~/Photos/");
ImageUploadControl.PostedFile.SaveAs(pathRoot + "/" + Name + ext);

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

Это может работать, если вы должны иметь одну строку:

ImageUploadControl.PostedFile.SaveAs(HttpContext.Current.Server.MapPath("~/Photos/") + Name + ext);
Другие вопросы по тегам