Skip to content

Создание Sitemap.xml для веб приложения Asp.net Core 7

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

[ Полезный рекламный блок ]

Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.


Рассмотрим механизм создания карты сайта. Вряд ли здесь можно предложить какое-то универсальное решение, все зависит непосредственно от веб-приложения, от того, как в нем устроена система маршрутов и ссылок, но в принципе можно в некоторой степени автоматизировать процесс создания файла sitemap.xml.

Для примера, создадим простой проект ASP.NET Core Web Application (Веб-приложение ASP.NET Core), который будет получать товары из базы данных и содержать 4 основные действия. Я ожидаю от вас минимальные знания концепций Entity Framework Core, поэтому в некоторых местах, вдаваться в подробности не стану.

Генерация sitemap.xml

Конфигурирование подключения

Модель и Репозиторий

Конфигурирование поставщика базы данных и класса контекста

Добавление контроллера и представления

Создание класса генератора карты

Использование собственных маршрутов

Изложение материала в статье будет вестись ускоренными темпами, поскольку большая часть работы касается генерация sitemap.xml с использованием ASP.NET Core МVС поверх фундамента, сформированного с помощью инфраструктуры Entity Fгamework Core.

Конфигурирование подключения

Для начала загрузим библиотеку Entity Framework Core Sql Server:

Перейдем в файл appsettings.json и пропишем конфигурацию подключения и логирования:

В обеспечении доступа к данным в БД инфраструктура Entity Framework Core полагается на класс контекста БД. Чтобы снабдить пример приложения контекстом, добавьте в папку Data файл класса по имени ApplicationContext.cs со следующим кодом:

Модель и Репозиторий

Модель для приложения GameStore будет основана на списке товаров. Создайте папку Models и добавьте в нее файл класса по имени Product.cs со следующим содержимым:

Мне нравится обеспечивать согласованный доступ к данным в приложении с ис­пользованием паттерна «Хранилище» (Repository), в котором интерфейс определяет свойства и методы, предназначенные для доступа к данным, а для работы с механизмом хранения данных применяется класс реализации. Преимущество использования паттерна «Хранилище» связано с облегчением модульного тестирования части MVC приложения, а также с тем, что детали, касающиеся хранения данных, скрыты от остальных частей приложения.

Чтобы создать интерфейс хранилища, создайте папку Interfaces и добавьте в нее файл интерфейса по имени IProduct.cs со следующим содержимым:

Создайте папку Repository и добавьте в нее файл класса по имени ProductRepository.cs со следующим содержимым:

В приложении ASP.NET Core MVC, доступ к объектам контекста данных управляется с использованием внедрения зависимостей и потому в класс ProductRepository был добавлен конструктор, принимающий объект ApplicationContext, который будет предоставлен средством внедрения зависимостей во время выполнения.

Конфигурирование поставщика базы данных и класса контекста

Добавьте в класс Program.cs операторы конфигурации, чтобы сообщить инфраструктуре Entity Framework Core о том, каким образом использовать строку подключения, которую должен применять поставщик БД, и как управлять классом контекста:

Для простоты примера, создание базы данных будет проходить без миграций. О создании и наполнении базы данных позаботиться класс контекста ApplicationContext.

Добавление контроллера и представления

Изменим контроллер HomeController, добавим следующее содержимое:

Здесь у нас четыре метода, кроме того, стоит отметить, что метод Product получает элементы из бд по ID. Таким образом, в базе данных еще могут храниться множество элементов, для каждого из которых должен формироваться свой путь типа:

https://localhost:7062/home/product?productId=fe438b5a-dad7-4999-8bc7-2d3d7181ac8a

Создание класса генератора карты

Теперь добавим в проект новый класс MapGenerator, который будет генерировать файл sitemap.xml:

Для упрощения создания ссылки по маршруту и его параметрам здесь определен метод расширения AbsoluteRouteUrl, который принимает название маршрута и его параметры.

Метод GetSitemapNodes() класса MapGenerator генерирует все ссылки по методам контроллера. Для получения всех id товаров из базы данных применяется вспомогательный сервис, который достает их из таблицы Products.

В классе Program.cs, добавим сервис:

В HomeController, получим его:

Теперь добавим в HomeController метод, который будет отдавать сгенерированную карту сайта:

И теперь при обращении по пути https://localhost:XXXX/sitemap.xml мы получим сгенерированную карту:

asp.net core sitemap

Использование собственных маршрутов

Фреймворк MVC позволяет использовать в приложении маршрутизацию на основе атрибутов. Мы можем указать собственные маршруты для каждого действия нашего контроллера, как мы сделали до этого для действия SitemapXml().

Если взглянуть на карту сайта, текущий путь получения продукта выглядит не очень, давайте определим собственный маршрут для получения товара:

Теперь, по мимо стандартного маршрута необходимо определить свой, для этого в классе Program.cs, добавим следующую строку:

В классе MapGenerator, изменим реализацию метода GetSitemapNodes:

Перейдем по пути https://localhost:XXXX/sitemap.xml и получим сгенерированную карту с новыми маршрутами:

generate sitemap xml asp.net core mvc

На этом статья «Создание Sitemap.xml для веб приложения Asp.net Core 7», подошла к концу, надеюсь вам было интересно. Вы можете скачать исходный код в моем репозитории — Github.

Поделитесь вашим опытом в комментариях, как вы генерируете sitemap.xml в Asp.Net Core или других типах проектов?

Так же вам может быть интересна предыдущая статья:

Checkbox List в Asp.net Core Mvc

Вы начинающий программист, который хочет изучить все тонкости языка C#?

Пройдите наш тест на 13 вопросов, чтобы узнать, как много вы знаете на самом деле!

C# Braincheck


Вы хотите научится писать код на языке программирования C#?

Создавать различные информационные системы, состоящие из сайтов, мобильных клиентов, десктопных приложений, телеграмм-ботов и т.д.

Переходите к нам на страницу Dijix и ознакомьтесь с условиями обучения, мы специализируемся только на индивидуальных занятиях, как для начинающих, так и для более продвинутых программистов. Вы можете взять как одно занятие для проработки интересующего Вас вопроса, так и несколько, для более плотной работы. Благодаря личному кабинету, каждый студент повысит качество своего обучения, в вашем распоряжении:

  • Доступ к пройденному материалу
  • Тематические статьи
  • Библиотека книг
  • Онлайн тестирование
  • Общение в закрытых группах

https://dijix.com.ua

Живи в своем мире, программируй в нашем.


 

Published inAsp.Net CoreМаркетинг и Seo
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x