Создание веб-сервера на языке c# (дополнение)

Данная статья является дополнением к предыдущей статье: как создать веб-сервер с помощью языка c#. В ней мы рассмотрим, как в зависимости от запроса клиента, можно возвращать содержимое той или иной html страницы.

Например, клиент отправляет запрос по адресу 192.168.10.1:8080/auto, в ответ получает содержимое страницы auto.html, если клиент запрашивает адрес 192.168.10.1:8080/hello, то получает содержимое страницы hello.html и так далее.

Создание хранилища

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

Переходим в окно Solution Explorer и создаём новую папку (Add -> New Folder), например mysite.

new folder

Добавление html страниц

Добавим в папку mysite несколько html страниц.

1. Нажимаем правую кнопку мыши на созданной папке и выбираем пункт Add -> New Item

new item

2. Переходим в раздел web и выбираем шаблон Html Page.

html page

3. Изменим имя файла, например на auto.html и нажмём на кнопку Add.

В результате в папке mysite появится файл auto.html.

solution explorer

По умолчанию в добавленном файле уже содержится набор html тегов описывающих каркас пустой html страницы. Если вы хотите внести какие-то изменения, то просто дважды щелкните по нему левой кнопкой мышки.

теги

Таким же способом можно добавить ещё несколько html страниц.

Обработка запросов

Хранилище создано, и теперь можно перейти к написанию кода.

Для начала добавим адреса, которые будет слушать, и обрабатывать наш веб-сервер. Список адресов можно поместить, например в массив:

С помощью цикла foreach добавим адреса в коллекцию Prefixes.

В данном примере все адреса имеют одинаковый номер порта, поэтому вместо того, чтобы создавать массив, можно просто указать серверу, чтобы он слушал и принимал все запросы на порт 8080.

Теперь нам нужно определить, какую страницу хочет получить клиент и вернуть ему её в качестве ответа сервера.

Адрес запрашиваемого ресурса можно получить с помощью свойства RawUrl объекта request.

С помощью метода ReadAllBytes считываем содержимое html файла и преобразуем его в массив байт для последующей отправки клиенту.

Если клиент запрашивает не существующую страницу, то ему будет возвращаться содержимое страницы default.html, которую необходимо вручную создать и добавить в хранилище сайтов.

Что получилось в итоге:

Запуск веб-сервера

Запускаем веб-сервер после чего на клиенте, в адресной строке веб-браузера, вводим адрес ресурса, например:

браузер

Также можно ввести адрес несуществующей страницы и убедится, что сервер возвращает клиенту содержимое страницы default.html.

Читайте также:

Похожие темы

основные компоненты .NET Framework (CLR и Framewor... Основные компоненты .NET Framework (CLR и Framework Class Library) В первой статье Вы узнали, что платформа .NET Framework состоит из 2 основных компо...
Генератор паролей на языке c#... Генератор паролей на языке c# На основе предыдущей статьи создадим простую программу, которая будет генерировать восьмизначные пароли, состоящие из л...
HTTP Cookies | Web Application Pentesting Добро пожаловать на курс Web Application Pentesting колеги. Сегодня мы поговорим с Вами о куки(Cookie). Сразу же хочу предупредить , что у Виве...
Как добавить dll файл в проект Visual Studio... Как добавить dll файл в проект Небольшое практическое руководство о том, как подключить dll файл в проект программы Visual Studio 1. Перейдите в о...
Visual studio Insert snippet Visual studio Insert snippet Сниппеты — это фрагменты или заготовки кода, которые позволяют сократить количество набираемого кода вручную. В...