Элемент add для обработчиков http имеет атрибут allowPathInfo. Для чего это? - PullRequest
2 голосов
/ 04 декабря 2009

Я играю с обработчиками http. При добавлении обработчика http в web.config, чтобы заставить его обрабатывать специальные расширения в IIS 7, необходимо зарегистрировать его в элементе system.webServer / handlers. Элемент add имеет атрибут allowPathInfo, и я не могу понять, для чего он ...

MSDN говорит:

Указывает, будет ли обработчик обрабатывает полную информацию о пути в URI, такой как Contoso / маркетинг / imageGallery.aspx. Если значение равно true, обработчик обрабатывает полный путь, Contoso / маркетинг / imageGallery. Если значение ложно, обработчик обрабатывает только последний раздел пути, /imageGallery.

Это не очень помогает ... Кто-нибудь?

Спасибо, Шей.

1 Ответ

6 голосов
/ 31 декабря 2009

allowPathInfo (AllowPathInfoForScriptMappings до IIS7) - для обработчиков, таких как CGI или WSGI, которые используют переменную среды PATH_INFO, как указано в спецификации CGI, только с концевыми частями пути, переданными в 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 неверно. Вздох.

...