Назад | Перейти на главную страницу

IIS FastCGI scriptProcessor с пробелами в пути?

Я пытаюсь настроить модуль FastCGI - все работает нормально, если я использую путь без пробелов, но наше приложение устанавливается в C: \ Program Files и другие пути, где пробелы являются общими.

Соответствующая часть web.config выглядит так:

Обратите внимание, что часть после канала | используется для настройки WFastCGI - метода запуска сервера WSGI на Python за IIS.

попробуйте короткое имя файла 8.3. Используя командную строку, перейдите в то место, где находится ваш исполняемый файл, и используйте следующую команду:

dir /x

Это даст вам длинный и короткий путь. В кратком имени пути не должно быть пробелов. Проверьте, работает ли это для вас.

Вы должны заключить путь к скрипту Python в двойные кавычки. В XML необходимо экранировать двойные кавычки, используя ".

Вам НЕ нужно заключать путь к исполняемому файлу Python в двойные кавычки! На самом деле это не сработает! Если ваша установка Python находится в нестандартном пути, содержащем пробелы, вам не нужно ничего делать, поскольку пробелы будут работать только для исполняемого пути (на самом деле это не модуль IIS / FastCGI, который имеет проблемы с пробелами, но вызов Python, где путь скрипта должен быть передан как единственный аргумент).

В качестве примера, вот как выглядит конфигурация, если Python установлен по нестандартному пути, содержащему пробелы (просто замените его на C:\python27\ если это не относится к вам).

В applicationHost.config:

<fastCgi>
  <application
   fullPath="C:\Program Files (x86)\MyApp\Python\python.exe"
   arguments="&quot;C:\Program Files (x86)\MyApp\Python\Lib\site-packages\wfastcgi.py&quot;"
   [...] />
</fastCgi>

В web.config:

<add name="MyHandler"
    path="myapp.py"
    verb="*"
    modules="FastCgiModule"
    scriptProcessor="C:\Program Files (x86)\MyApp\Python\python.exe|&quot;C:\Program Files (x86)\MyApp\Python\Lib\site-packages\wfastcgi.py&quot;"
    resourceType="Unspecified"
    requireAccess="Script" />

РЕДАКТИРОВАТЬ: настроить applicationHost.config программно с использованием appcmd.exe, вы должны избегать двойных кавычек в аргументе как \". Например:

set config /section:system.webServer/fastCgi /+"[
  fullPath='C:\Program Files (x86)\MyApp\Python\python.exe',
  arguments='\"C:\Program Files (x86)\MyApp\Python\Lib\site-packages\wfastcgi.py\"',
  [...]