Я не могу понять, как установить и прочитать переменные среды в Microsoft Internet Information Services (IIS) версии 10. У меня есть приложение Fast CGI, для которого требуются переменные среды. В предыдущих версиях IIS я просто устанавливал общесистемные переменные в Windows «Свойства системы». Однако в IIS 10 мое приложение FCGI не читает их. Итак, мой первый вопрос: есть ли шаги, которые необходимо предпринять, чтобы процесс IIS мог читать системные переменные?
В качестве альтернативы, как мне установить переменные среды в IIS 10? Этот сайт Microsoft объясняет это, но не достаточно подробно для меня, чтобы заставить его работать. В частности, в какой файл и в какой раздел вы помещаете раздел <environmentVariables>
? Пример XML и пример командной строки имеют name="Contoso"
(см. Ниже), но что это - имя пула приложений, или мое приложение FCGI, или что-то еще?
<applicationPools>
<add name="Contoso" managedRuntimeVersion="v4.0" managedPipelineMode="Classic">
<environmentVariables>
<add name="foo" value="bar" />
</environmentVariables>
</add>
</applicationPools>
Редактировать в ответ на Jokies Ding: MAP22
и PROJ_LIB
- это две переменные окружения, которые мне нужны. В C: \ Windows \ System32 \ inetsrv \ Config \ applicationHost.config у меня есть:
<applicationPools>
<add name="DefaultAppPool" />
<add name=".NET v4.5 Classic" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" />
<add name=".NET v4.5" managedRuntimeVersion="v4.0" />
<add name="ASP.NET v4.0" autoStart="true" managedRuntimeVersion="v4.0" />
<applicationPoolDefaults managedRuntimeVersion="v4.0">
<processModel identityType="ApplicationPoolIdentity" />
<environmentVariables>
<add name="PROJ_LIB" value="/gdal/bin/proj6/SHARE" />
<add name="MAP22" value="/tetonwy/mapserv/main.map" />
</environmentVariables>
</applicationPoolDefaults>
</applicationPools>
и
<fastCgi>
<application fullPath="C:\gdal\bin\ms\apps\mapserv.exe">
<environmentVariables>
<environmentVariable name="MAP22" value="C:\tetonwy\mapserv\main.map" />
<environmentVariable name="PROJ_LIB" value="C:\gdal\bin\proj6\SHARE" />
</environmentVariables>
</application>
</fastCgi>
, а в окне cmd переменные среды видны
C:\>set MAP22
MAP22=C:\tetonwy\mapserv\main.map
C:\>set PROJ_LIB
PROJ_LIB=C:\gdal\bin\proj6\SHARE
Похоже, что переменные установлены повсеместно, но приложение их не видит. C:\gdal\bin\ms\apps\mapserv.exe
- это приложение FastCGI, которое не видит переменные среды. Это скомпилированная программа на C, которую я использовал в предыдущих версиях IIS.