Запуск исполняемого файла из локального хранилища с помощью веб-роли Azure.

я пытаюсь запустить простой исполняемый файл, используя веб-роль Azure.

  • Исполняемый файл хранится в локальном хранилище веб-роли.
  • Исполняемый файл создает файл log.txt после запуска.

Это метод, который я использую для запуска исполняемого файла:

    public void RunExecutable(string path)
    {
        Process.Start(path);
    }

Где путь localStorage.RootPath + "Application.exe"

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

Я протестировал исполняемый файл, он работает, если я запускаю его вручную, он создает файл log.txt.

Кто-нибудь может увидеть проблему?


person Sami    schedule 06.03.2012    source источник


Ответы (2)


Попробуйте установить явный рабочий каталог для процесса ... Интересно, создается ли log.txt, но не там, где вы ожидаете. (Или, возможно, приложение пытается создать log.txt, но терпит неудачу из-за разрешений на каталог, в котором оно пытается его создать.)

person user94559    schedule 07.03.2012
comment
Я хотел бы сохранить локальное хранилище в качестве рабочего каталога, поскольку затем я хотел бы загрузить файл журнала в контейнер хранилища больших двоичных объектов. - person Sami; 07.03.2012
comment
Замечательно. Тогда вы должны использовать это. Это не будет рабочим каталогом по умолчанию. См. stackoverflow.com/questions/114928/ как установить рабочий каталог. - person user94559; 08.03.2012
comment
Спасибо, это сработало отлично, я предположил, что рабочий каталог - это каталог, в котором находится приложение. - person Sami; 08.03.2012
comment
Рад, что у вас все заработало! К вашему сведению, рабочим каталогом по умолчанию является рабочий каталог родительского процесса. (Он просто наследует.) - person user94559; 09.03.2012

Если вы используете удаленный рабочий стол в экземпляре, не можете ли вы найти файл, созданный в папке E:\approot\? Как сказал Стив, использование рабочего каталога для процесса решит проблему.

Вы можете использовать Environment.GetEnvironmentVariable("RoleRoot") для создания URL-адреса корневого каталога вашего приложения.

person Robbin Cremers    schedule 07.03.2012
comment
Спасибо за ваш ответ, я не знаком с рабочими каталогами, не могли бы вы объяснить, как выделить рабочий каталог для процесса. Буду ли я использовать Directory.SetCurrentDirectory? - person Sami; 07.03.2012