Получить полный локальный путь к файлу в узле сайта в веб-ролике в файле запуска cmd? - PullRequest
0 голосов
/ 21 октября 2011

Прошло уже несколько часов, я просто не понимаю.

Ситуация: - Перенос приложения ASP.net в Azure - ВАЖНО: Это веб-ролик с несколькими веб-сайтами, все веб-сайты скомпилированы в папке "azure.builds", поэтому привязки к моим сайтам physicalDirectory = ".. \ azure.builds \ www.mywebsite.com" physicalDirectory = ".. \ azure.builds \ cb.mywebsite.com" и так далее

У меня есть сценарий cmd, который отлично работает на моем компьютере разработчика, который устанавливает разрешение на IIS для выполнения в exe-файле (он должен вызываться с помощью HTML-формы).

Вот мой локальный код startup.cmd, который работает против моего локального IIS:

% windir% \ system32 \ inetsrv \ appcmd set config /section:system.webServer/handlers / + "[name = 'MY_GCI', path = ' .exe', глагол = '', modules = 'CgiModule', scriptProcessor = 'c: \ sites \ myproject \ azure.builds \ cb.mywebsite.com \ cgi-bin \ mymodule.exe', resourceType = 'Either'] "

В моей html-форме файл вызывается с помощью действия "http://cb.mywebsite.com/cgi-bin/mymodule.exe" и угадайте, как он работает.

Но при моей миграции на Azure это не так, я не могу установить разрешение для этого конкретного файла. Проблема в том, что я не могу определить полный путь к файлам EXE, как показано в примере выше.

Я пробовал это (% ROLEROOT%):

% windir% \ system32 \ inetsrv \ appcmd set config /section:system.webServer/handlers / + "[name = 'MY_GCI', path = ' .exe', глагол = '', modules = 'CgiModule', scriptProcessor = '% ROLEROOT% \ azure.build \ cb.mywebsite.com \ cgi-bin \ mymodule.exe', resourceType = 'Either'] "

не работает. Я изучил несколько примеров, связанных с аналогичной настройкой CGI (например, с запущенным PHP), но сложность заключается в том, что модуль EXE должен быть выставлен на http://cb.mywebsite.com/cgi-bin/mymodule.exe, который даже не является основным корневым веб-сайтом в моей лазурной веб-роли, так что это не совсем точно. то же самое.

Извините, если не очень понятно, скажем вкратце: как найти полный локальный путь к конкретному файлу в определенном узле сайта в веб-ролике в файле запуска cmd?

1 Ответ

1 голос
/ 21 октября 2011

Похоже, у вас есть это значение вне Azure:

scriptProcessor = 'C: \ сайтов \ MyProject \ azure.builds \ cb.mywebsite.com \ CGI-BIN \ mymodule.exe

Теперь вам нужен эквивалент в Azure. Ключом для этого является использование переменной окружения ROLEROOT.

Похоже, вы уже рассмотрели ROLEROOT, но, возможно, есть немного в отображении структуры каталогов. Я предлагаю вам RDP в экземпляр Azure и ориентироваться (посмотрите e: \ Approot для начинающих, но вы не всегда будете там, поэтому вам нужно использовать ROLEROOT). RDP: http://msdn.microsoft.com/en-us/library/windowsazure/gg443832.aspx

Если ваша настоящая проблема связана с "... трудность состоит в том, что модуль EXE должен быть выставлен на http://cb.mywebsite.com/cgi-bin/mymodule.exe, который даже не является основным корневым веб-сайтом на моей лазурной веб-роли, так что это не так точно так же." тогда я не уверен, что смогу помочь, поскольку я не уверен в проблеме, которую вы описываете. Но одна идея: включите RDP (как упомянуто выше) и попробуйте вручную выполнить сценарий CGI в Azure и посмотрите, как это происходит. Если это не сработает, возможно, у вас проблемы с доступом или разрешением. Если он работает , у вас все еще может быть проблема, связанная с разрешениями (поскольку учетная запись RDP будет иметь большую мощность, чем пользователь IIS по умолчанию).

Несколько других вещей: убедитесь, что ваша веб-роль Azure запущена с повышенными разрешениями, используя следующий параметр в ServiceDefinition.csdef:

<WebRole name="WebHost">    
    <Runtime executionContext="elevated"/>
...

А также рассмотрите возможность запуска вашей задачи запуска с повышенными правами, также через ServiceDefinition.csdef:

<Startup>
  <Task commandLine="startup.cmd" executionContext="elevated" />
</Startup>

И, наконец, несколько советов по отладке StartUp Task:

http://blog.smarx.com/posts/windows-azure-startup-tasks-tips-tricks-and-gotchas

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...