2014-11-12 2 views
1

Так что это немного asp.net. Мне кажется, что слишком много людей не понимают. То есть, я не понимаю этого, и я спросил, кучка людей/googled, и никто другой, похоже, не знает особенностей.Почему контент, скрипты не работают как статические и другие каталоги?

По умолчанию приложения ASP.Net будут служить файлами в каталогах Content и Scripts в качестве статического контента. На самом деле, если я создаю другие каталоги, я думаю, что он будет также служить статическим контентом в них.

Однако содержимое некоторых каталогов не будет обслуживаться - например, типичный каталог контроллеров Mvc Asp.Net. Кроме того, вы всегда можете настроить маршруты в asp.net (или обработчиках OWIN), которые будут выбирать определенные маршруты, но не все.

Ничто, кажется, нигде не настроено. У меня есть свои подозрения, но я действительно не понимаю, что именно является правилом для того, что получает статический контент и что обрабатывается asp.net?

ответ

1

Я всегда находил этот графический полезно: 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 также может. У меня нет опыта в этом, но способ, которым они обрабатывают пути, вероятно, немного отличается.

+0

Нет команды ops. То, о чем я упоминал, происходит из коробки со свежей установкой Windows + VS и iisexpress. Ничего необычного вообще в web.config и никаких упоминаний о каких-либо конкретных путях. Если что-то настраивается по умолчанию на машине.config level Я не знаю, что это может быть, поскольку вы можете обслуживать контент из произвольно названных каталогов (плюс я никогда не видел ничего подобного в machine.config). Я полностью понимаю, как OWIN и сам хост-материал справляются с этим, там нет никакой тайны, но конвейер IIS - это своего рода вопросительный знак. –

+1

Я вижу, я неправильно читаю оригинальный вопрос, так как это не о том, как контроллеры обслуживаются так, как почему файлы '* .cs' не получают статического содержимого. Это определенно обрабатывается информацией из этого ответа: http://serverfault.com/questions/175499/serving-cs-csproj-files-on-iis7-5 и ищет 'fileExtension' в machine.config, вероятно, укажет вы на правильном пути. – welegan

+0

Я вижу. Значит, вы говорите, что это расширение на основе файлов, а не папка? Итак, в основном есть что-то волшебное о '.' в маршруте, встроенном в IIS? Кроме того, не знаете, где настроены cs и другие файлы. Ничего особенного в моем web.config и 'ls C: \ Windows \ Microsoft.NET \ Framework \ -rec -inc machine.config | Получить контент | Select-String -Pattern fileExten' ничего мне не дает. –

Смежные вопросы