Инструменты для разработки

Visual Studio 2017 RC

Непревзойденная производительность для любого способа разработки, любого приложения и любой платформы

Visual Studio Community 2015

Бесплатная среда разработки

Visual Studio Enterprise 2015

Комплексное решение для рабочих групп

Дополнительное ПО и SDK

Выберите необходимые инструменты.

Готовим ASP.NET5, выпуск №1 – поговорим про статический контент

Дата публикации: 11.09.2015

Этой статьей я открываю авторскую колонку про технологии, секреты, советы и лучшие практики новой версии ASP.NET5. Платформа .NET стремительно движется к кроссплатформенности и ее веб-часть – ASP.NET – в том числе. Вы уже слышали и можете найти массу информации в сети о том, что .NET становится opensource, о выпуске новых версий и официальной поддержке .NET на OSX, Linux. Вместе с этими анонсами и ASP.NET5 становится доступным на большем числе платформ для большего круга разработчиков.


Тема первого выпуска – работа со статическими файлами в ASP.NET5 – задача насколько тривиальная, настолько же и важная.

Совет! Вы можете попробовать все самостоятельно или загрузив исходный код из GitHub https://github.com/vyunev/aspnetcolumn1.


Новый подход

В ASP.NET5 подход к работе со статическими файлами сильно изменился, сразу по нескольким направлениям. Начнем с того, что в проекте в Visual Studio и при работе с проектами в других редакторах для статического контента предлагается отдельная папка – wwwroot (Рис. 1). По сути, содержимое wwwroot теперь отображает файловое представление сайта на веб-сервере.


Рис.1 – Структура проекта ASP.NET5 (beta5)

Использование отдельной папки для статического контента позволяет упростить многие задачи, включая работу с системами контроля версий, кэширования контента на CDN, задач минификации и упаковки файлов, конфигурирования обработки запросов веб-сервером.

Кроме того, введение wwwroot позволяет сделать работу сайта безопаснее, так как запросы к файлам на сайте теперь могут быть обращены только к содержимому wwwroot, а внешние конфигурационные или другие файлы, лежащие вне этой папки недоступны для запроса.

При желании, разработчики могут изменить имя этой папки с помощью параметра конфигурации webroot в project.json (Рис. 2).


Рис.2 – Изменение имени папки для статического контента через файл конфигурации

Совет! Для переименования папки через Visual Studio, лучшие всего, первым шагом выполнить переименование в Solution Explorer и только потом изменить конфигурационный файл. Иначе, умная Visual Studio создаст новую папку самостоятельно.

Другой важный параметр конфигурации — это включение пакета Microsoft.AspNet.StaticFiles в список зависимостей проекта ASP.NET, этот пакет позволяет конвейеру платформы обрабатывать статический контент (Рис. 3).


Рис.3 – Включение пакета в список зависимостей проекта ASP.NET

После включения пакета в список зависимостей требуется добавить обработку в конвейер обработки запросов ASP.NET. Подобная конфигурация выполняется в методе Configure специального служебного класса Startup, который по умолчанию располагается в файле Startup.cs (Рис. 4).


Рис.4 – Включение обработки статических файлов

После указанной конфигурации весь статический контент, запрошенный у сайта будет отдаваться из определенной конфигурацией папки.

Расширение функционала

В ASP.NET5 каждую часть платформы можно переопределить, дополнить или заменить. Мы можем определить свой собственный обработчик статических файлов или дополнить существующий, указав новые правила. Например, если мы хотим добавить возможность возвращать *.json файлы как статические, нам достаточно определить следующий провайдер контента:

Листинг 1. – Определение провайдера типа контента


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

Листинг 2. – Использование провайдера типа контента


При определении работы конвейера обработки запросов для статических файлов можно указать еще несколько параметров. Для этого у StaticFileOptions есть набор свойств. Перечислю некоторые из них:

  • ServeUnknownFileTypes – позволяет указать конвейеру обрабатывать все неизвестные типы файлов при запросе, по умолчанию установлено значение false;
  • DefaultContentType – позволяет указать тип контента, который будет присваиваться по умолчанию запросом к неопределенным типам файлов. По умолчанию установлено в none.


На этом можно завершить введение в тему обработки статического контента на базе ASP.NET5.

Автор статьи: Владимир Юнев