http处理程序的add元素具有allowPathInfo属性。它是为了什么?

时间:2009-12-04 09:01:49

标签: asp.net httphandler

我正在玩http处理程序。将http处理程序添加到web.config时,为了使其在IIS 7上处理特殊扩展,您需要在system.webServer / handlers元素下注册它。 add元素有一个allowPathInfo属性,我无法理解它是什么...

MSDN说:

  

指定是否处理程序   处理完整路径信息   URI,例如   CONTOSO /营销/ imageGallery.aspx。   如果值为true,则为处理程序   处理完整路径,   CONTOSO /营销/ imageGallery。如果   值为false,处理程序处理   只有路径的最后一部分,   / imageGallery。

它没有那么多帮助......任何人?

谢谢, 吉文。

1 个答案:

答案 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现在是错误的。叹息。