ASP.NET C # - Создать каталог загрузки на лету? - PullRequest
0 голосов
/ 01 сентября 2009
    public class UploadHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
        ...

        // Create the directory if needed...
        if (!Directory.Exists(uploadDir))
        {
            System.Security.AccessControl.DirectorySecurity ds = new System.Security.AccessControl.DirectorySecurity(RivWorks.AppSettings.UploadRoot, System.Security.AccessControl.AccessControlSections.All);
            Directory.CreateDirectory(uploadDir, ds);
        }
        ...
    }

У меня есть приведенный выше фрагмент кода для файла ASHX, и он отлично работает в моей локальной среде. Как только я отправляю его в серверную среду, я не получаю сообщение об ошибке, похоже, он создал каталог, но когда я проверяю его - ну, его там нет. Когда я запускаю его через приложение FLEX, мы получаем эту ошибку:

Ошибка № 2038: ошибка ввода-вывода файла. URL: http://[ourdomain].com/UploadHandler.ashx?CompanyID=d229cc80-ca96-4a8a-992c-80c94ac2c6b4

Есть ли что-то, чего мне не хватает?

UPDATE:

  1. Я могу создавать файлы в любом месте на диске
  2. Я не могу создавать каталоги в любом месте на диске.

Теперь я получаю эту ошибку при попытке создать каталог:

Процесс не обладает Привилегия SeSecurityPrivilege, которая требуется для этой операции.

Ответы [ 3 ]

2 голосов
/ 01 сентября 2009

Вы проверили, что ваша программа имеет правильные права доступа к соответствующим каталогам на сервере?

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

0 голосов
/ 21 июня 2012

Просто используйте функцию mkdir () для создания каталога. для определения пути вы можете использовать атрибут SERVERMAPPATH.

используйте в блоке try catch endtry, чтобы избежать уже существующей или любой другой ошибки.

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

Работает ли сайт с олицетворением личности = true? Если это так, он работает под вашими учетными данными / авторизацией в вашей среде

...