我正在尝试配置一个 FastCGI 模块 - 如果我使用没有空格的路径,整个过程就可以正常工作,但是我们的应用程序安装到 C:\Program Files 和其他常见空格的路径中。
web.config 的相关部分如下所示:
请注意,管道后的部分用于配置 WFastCGI - 一种在 IIS 后面运行 python WSGI 服务器的方法。
答案1
您必须将 Python 脚本的路径括在双引号中。在 XML 中,必须使用 转义双引号"
。
您不必将 Python 可执行文件的路径括在双引号中!事实上,这是行不通的!如果您的 Python 安装在包含空格的非标准路径中,那么您不需要执行任何操作,因为空格只适用于可执行路径(实际上不是 IIS/FastCGI 模块存在空格问题,而是 Python 的调用,其中脚本路径将作为单个参数传递)。
举个例子,如果 Python 安装在包含空格的非标准路径中,则配置如下所示(C:\python27\
如果这不适用于您,只需将其替换为)。
在applicationHost.config
:
<fastCgi>
<application
fullPath="C:\Program Files (x86)\MyApp\Python\python.exe"
arguments=""C:\Program Files (x86)\MyApp\Python\Lib\site-packages\wfastcgi.py""
[...] />
</fastCgi>
在web.config
:
<add name="MyHandler"
path="myapp.py"
verb="*"
modules="FastCgiModule"
scriptProcessor="C:\Program Files (x86)\MyApp\Python\python.exe|"C:\Program Files (x86)\MyApp\Python\Lib\site-packages\wfastcgi.py""
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\"',
[...]
答案2
尝试使用简短的 8.3 文件名。使用命令提示符,导航到可执行文件所在的位置并使用以下命令:
dir /x
这将为您提供长路径名和短路径名。短路径名不应包含空格。检查这是否适合您。