Файл без точек выдает ошибку 404 в IIS - PullRequest
11 голосов
/ 17 мая 2011

Я успешно использую .less файлы на моем сервере dev Cassini (с dotless ) в течение нескольких недель, но когда я публикуюсь на локальном сервере IIS, они выдают 404 ошибки.Присоединение моего отладчика к IIS не дает никаких исключений.Я также перезапустил свой пул приложений и сервер IIS.

Есть идеи?

Ответы [ 2 ]

31 голосов
/ 17 мая 2011

Похоже, вы пропускаете MIME-тип в IIS.

Для IIS7 добавьте следующее к вашему web.config:

<system.webServer>
    <staticContent>
        <mimeMap fileExtension=".less" mimeType="text/css" />
    </staticContent>
</system.webServer>

Для IIS6 вы можете сделать (при условии, что у вас есть доступ RDP администратора):

cscript adsutil.vbs set W3SVC/1/Root/MimeMap ".less, text/css"

Где /1/ - это номер IIS сайта.

9 голосов
/ 22 августа 2013

Просто добавляю (довольно поздно, я понимаю) мои два бита к этому обсуждению.

Я только что столкнулся с теми же симптомами, и вышеупомянутое исправление не помогло мне. Я сделал однако в итоге нашел другую причину этих симптомов и решение для этого.

Ответ 404 в моем случае содержал следующее сообщение в теле ответа:

/ * Произошла ошибка. Обратитесь к журналу или просмотреть на локальном компьютере. * /

Похоже, это показатель того, что меньше файла действительно было найдено и запрос обрабатывался dotLess (сообщение можно найти в исходном коде dotLess), но во время обработки запроса возникла исключительная ситуация FileNotFoundException.

Я отследил проблему до оператора @import, который ссылался на файл .less, который таинственно отсутствовал на сервере IIS, даже если он присутствовал на сервере разработки.

Оказалось, что для действия по сборке для этого проблемного файла .less было задано значение Нет, а не для содержимого, как для всех других файлов .less в моем проекте.

Таким образом, следующий логический вопрос был, почему на земле было неправильное действие по сборке?

Ну, я добавил файл как файл .css, затем решил импортировать его в файл .less и переименовал его в .less (поскольку .css - это подмножество .less, но less не импортирует css файлы). Я повторил процесс с новым файлом .css и обнаружил, что проблема воспроизводима.

Кажется, что Visual Studio меняет действие сборки с Content на None за кулисами как неожиданный побочный эффект переименования .css в .less. Таким образом, переименованный файл .less не публикуется на сервере IIS.

...