Я всегда находил этот графический полезно: http://www.4guysfromrolla.com/images/step2.gif
В частности, HttpHandlers, упомянутые в этом графике соответствуют этой секции файла Web.config в корневом каталоге .NET веб-проекта:
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
Атрибут этого тега может использоваться для настройки только определенных каталогов, обрабатываемых определенным классом. В этот момент IIS передаст HTTP-запрос соответствующему классу с соответствующим контекстом и потоком и т. Д. Я предполагаю, что если вы используете IIS с несколькими фреймворками, у каждого есть отдельный путь, связанный с его тегом add-handler.
Кроме того, IIS имеет собственные настройки по умолчанию для того, какие расширения файлов сопоставляются с классами обработчиков. Они также могут быть изменены в интерфейсе управления IIS, поэтому возможно, что ваша команда супер-полезной команды добавила, что для вас там, даже если она отсутствует в вашем web.config. В конце концов, однако, это отношения между классом url-HttpHandler, который определяет static-file versus dynamic.
Edit:
Там еще один набор тегов, изложенные в этом ServerFault ответ:
https://serverfault.com/questions/175499/serving-cs-csproj-files-on-iis7-5
Это описывает <add fileExtension=".cs" allowed="false" />
тег, который работает на расширение файла в отличие от рисунка на весь путь. Это то, что запрещает файлы, заканчивающиеся на .cs
, и .csproj
от обслуживания. Кроме того, поскольку вы работаете с установкой IISExpress, вы должны знать, что он использует другой файл конфигурации, чем стандартный файл machine.config. Путь для этого файла описан в этом ответе:
Where is the IIS Express configuration/metabase file found?
Все это становится мутным немного понятием собственного хостинга, иначе не IIS. Нэнси делает это, я полагаю, и ServiceStack также может. У меня нет опыта в этом, но способ, которым они обрабатывают пути, вероятно, немного отличается.
Нет команды ops. То, о чем я упоминал, происходит из коробки со свежей установкой Windows + VS и iisexpress. Ничего необычного вообще в web.config и никаких упоминаний о каких-либо конкретных путях. Если что-то настраивается по умолчанию на машине.config level Я не знаю, что это может быть, поскольку вы можете обслуживать контент из произвольно названных каталогов (плюс я никогда не видел ничего подобного в machine.config). Я полностью понимаю, как OWIN и сам хост-материал справляются с этим, там нет никакой тайны, но конвейер IIS - это своего рода вопросительный знак. –
Я вижу, я неправильно читаю оригинальный вопрос, так как это не о том, как контроллеры обслуживаются так, как почему файлы '* .cs' не получают статического содержимого. Это определенно обрабатывается информацией из этого ответа: http://serverfault.com/questions/175499/serving-cs-csproj-files-on-iis7-5 и ищет 'fileExtension' в machine.config, вероятно, укажет вы на правильном пути. – welegan
Я вижу. Значит, вы говорите, что это расширение на основе файлов, а не папка? Итак, в основном есть что-то волшебное о '.' в маршруте, встроенном в IIS? Кроме того, не знаете, где настроены cs и другие файлы. Ничего особенного в моем web.config и 'ls C: \ Windows \ Microsoft.NET \ Framework \ -rec -inc machine.config | Получить контент | Select-String -Pattern fileExten' ничего мне не дает. –