Стили из файлов без точек не используются

У нас есть веб-сайт, на котором используются файлы .less (предварительный компилятор dotless был установлен с помощью nuget), однако файлы .less не обрабатываются как файлы css.

При попытке просмотра веб-сайта в Firefox консоль выдает следующую ошибку: Таблица стилей http://website/css/init.less не была загружена, поскольку ее тип MIME, «application/octet-stream», не является «текстовым». /CSS".

Наш файл без точек пытается импортировать больше файлов:

@import "imports";
..

Но даже заменив этот текст кодом css, стили все равно не применяются. Но если я перейду к этому файлу в Visual Studio, он отобразит все css из импортированных файлов.


person Lex    schedule 18.12.2014    source источник
comment
Не могли бы вы дать ссылку на ваш прекомпилятор, который вы используете?   -  person Aristos    schedule 18.12.2014
comment
dotlesscss.org   -  person Lex    schedule 18.12.2014


Ответы (1)


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

Вы можете сделать это либо на уровне сервера в IIS Admin (если вы, вероятно, будете использовать это для нескольких сайтов на машине), либо на уровне локального сайта через web.config — обратите внимание, что вы не можете сделать и то, и другое, IIS будет жаловаться на наличие нескольких записей для расширения файла.

Для этого в web.config внутри элемента <configuration><system.webServer> добавьте следующие элементы:

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

Очевидно, что если у вас уже есть записи mimemap, просто добавьте туда mimemap.

Это гарантирует, что IIS утверждает, что файлы .less обслуживаются обработчиком как CSS, а не application/octect-stream по умолчанию.

Если это все еще не показывает их как обработанные, есть еще несколько вещей, которые вам нужно проверить:

  1. Убедитесь, что обработчик правильно зарегистрирован в разделах <system.webserver><handlers> и <system.web><httpHandlers> (в зависимости от используемой версии IIS:
    <add name="dotless" path="*.less" verb="GET" type="dotless.Core.LessCssHttpHandler,dotless.Core" resourceType="File" preCondition="" />
    и
    <add path="*.less" verb="GET" type="dotless.Core.LessCssHttpHandler, dotless.Core" />
  2. Убедитесь, что IIS настроен на отправку всех запросов через обработчики ASP.NET, настроенные на шаге 1. По умолчанию .less файлов, вероятно, считаются «статическими файлами» и будут обрабатываться только StaticFileModule.
    введите здесь описание изображения
person Zhaph - Ben Duguid    schedule 18.12.2014
comment
Мы попробовали настроить файл конфигурации, однако он по-прежнему показывает содержимое файлов с меньшим количеством файлов и не обрабатывает их правильно. - person Lex; 18.12.2014
comment
Вы уверены, что обработчик dotLess правильно зарегистрирован? - person Zhaph - Ben Duguid; 18.12.2014
comment
Я думаю, что он настроен правильно, но сейчас я не уверен. Я установил dotless через nuget, добавил необходимые биты в файл web.config. И, согласно веб-сайту без точек, это все, что вам нужно сделать. Мы запускаем это решение как веб-сайт, а не веб-приложение, будет ли это иметь значение? - person Lex; 18.12.2014
comment
Установка через NuGet (Install-Package dotLess) должна правильно настроить для вас все в web.config: 2 обработчика, которые я только что добавил в свой ответ, а также configSection и настройки по умолчанию. На какой версии IIS вы работаете? - person Zhaph - Ben Duguid; 18.12.2014
comment
Вариант с IIS работал для нас, поэтому мы решили продолжить и использовать его в качестве нашего решения. - person Lex; 18.12.2014