Файлы .less статически обслуживаются на IIS6 + .NET 4 MVC3 - PullRequest
5 голосов
/ 07 сентября 2011

В проекте .NET 4 MVC3 я использую локальную машину на IIS6 (не спрашивайте, почему). Он имеет правильное сопоставление подстановочных знаков в IIS для v4 aspnet_isapi.dll, и то же самое касается расширения .less.

В Web.config определены эти обработчики http IIS6 и IIS7.

<system.web>
  <httpHandlers>
    <add type="dotless.Core.LessCssHttpHandler,dotless.Core" validate="false" path="*.less" verb="*" />
  </httpHandlers>
</system.web>

<system.webServer>
  <handlers>
    <add name="less" type="dotless.Core.LessCssHttpHandler,dotless.Core" path="*.less" verb="*" />
  </handlers>
</system.webServer>

При переходе к /path/to/nonexisting.less выдается правильная ошибка, которая показывает мне трассировку стека, в которой находится LessCssHttpHandler.

Переход на /path/to/existingfileondisk.less просто загружает оригинальный файл меньше как есть. Мне кажется, что здесь есть действующий обработчик статического файла, хотя я не уверен.

Чего мне не хватает (кроме новой машины;))?

Ответы [ 2 ]

2 голосов
/ 17 сентября 2012

Я также столкнулся с этой проблемой, и следующее решение исправило проблему:

Если вы используете IIS 6 или более раннюю версию или не используете интегрированный конвейер IIS, вам необходимо настроить параметры веб-сервера таким образом, чтобы запросы файлов .LESS направлялись в механизм ASP.NET (чтобы их можно было обработано .LESS HTTP Handler). Подробнее см. Как обрабатываются веб-страницы ASP.NET на веб-сервере

Шаги по настройке IIS6:

  1. Щелкните правой кнопкой мыши на веб-сайте -> Свойства -> Домашний каталог -> Конфигурация -> Расширения приложений -> Добавить ->:
    • Исполняемый файл = путь к библиотеке DLL asp.net (например, c: \ windows \ microsoft.net \ framework \ v4.0.30319 \ aspnet_isapi.dll)
    • Расширение = .less
    • Снимите отметку «Убедитесь, что файл существует»
  2. Настройка MIME-типа: щелкните правой кнопкой мыши на веб-сайте -> Свойства -> HTTP-заголовки -> MIME-типы -> Создать -> Расширение =.
1 голос
/ 11 ноября 2011

Я предлагаю вам поместить все ваши файлы .less в папку.Допустим, вы создали папку с именем Less в корневом каталоге.Вы должны добавить эту строку в global.asax , чтобы она заработала:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("Less/{*path}");
    ...
}
...