我正在玩http处理程序。将http处理程序添加到web.config时,为了使其在IIS 7上处理特殊扩展,您需要在system.webServer / handlers元素下注册它。 add元素有一个allowPathInfo属性,我无法理解它是什么...
MSDN说:
指定是否处理程序 处理完整路径信息 URI,例如 CONTOSO /营销/ imageGallery.aspx。 如果值为true,则为处理程序 处理完整路径, CONTOSO /营销/ imageGallery。如果 值为false,处理程序处理 只有路径的最后一部分, / imageGallery。
它没有那么多帮助......任何人?
谢谢, 吉文。
答案 0 :(得分:6)
allowPathInfo
(IIS7之前的AllowPathInfoForScriptMappings
)适用于像CGI或WSGI这样的处理程序,它使用在CGI规范中指定的PATH_INFO环境变量,只传递路径的尾随部分PATH_INFO。
IIS默认情况下错误地将PATH_INFO设置为整个路径,包括已存储在SCRIPT_NAME中的部分,这将混淆依赖于变量标准解释的任何内容。另一方面,ASP需要“坏”设置。
上面引用的例子似乎有点误导。当你有一个脚本/example/example.cgi/foo
时就是这样:SCRIPT_NAME永远是/example/example.cgi
; PATH_INFO应为/foo
,但如果未设置allowPathInfo,则会得到整个/example/example.cgi/foo
。
顺便提一下,如果你打开allowPathInfo
,IIS将正确获取PATH_INFO ...但PATH_TRANSLATED现在是错误的。叹息。