Одна збірка - один web-сайт

Структура Web-сайту буде приблизно такою:

Після виконання всіх цих дій необхідно створити віртуальний каталог в IIS і розмістити в ньому отриманий Web-сайт.

Вузькі місця використовуваного методу

Через використання технології HttpHandlers доступ до файлів, які знаходяться в кореневій папці, можна отримати з будь-якої, навіть неіснуючої папки.

Так само через відсутність яких би то не було файлів в папці Web-сайту немає можливості використовувати функцію IIS - документ за замовчуванням. Так що якщо спробувати потрапити в кореневій каталог Web-сайту, ви отримаєте помилку 403.

Повторне використання Web-сторінок і призначених для користувача контролів

Після створення сайту, що складається з єдиною збірки, створену збірку можна повторно використовувати в інших сайту.

Створимо новий веб-сайт. Назвемо його ReusabilitySite і додамо до нього збірку, яка вийшла в результаті компіляції першого веб-сайту.

Додати збірку можна за допомогою пункту Add Reference меню WebSite.

Додамо до проекту файл web.config такого змісту:

Після всіх маніпуляцій структура сайту повинна вийти приблизно такою:

Щоб додати до нового веб-сайту сторінки з збірки, в файлі web.config необхідно вказати відповідні обробники в розділі httpHandlers. Додамо до проекту сторінку Page1.aspx з першого проекту.

Повторне використання Web-сторінок

Для цього необхідно змінити файл web.config, додавши в нього розділ httpHandlers і відповідний обробник запитів. У разі проектів, описаних в даній статті, файл web.config повинен містити наступну інформацію:

Спробуємо виконати проект і перейти на сторінку Page1.aspx. У браузері відобразиться сторінка, створена в першому проекті.

Повторне використання призначених для користувача control-ів

Додавання користувача control-ів - не настільки тривіальне завдання. Для тестування можна використовувати сторінку Default.aspx, яка була автоматично додана при створенні ReusabilitySite.

Насамперед необхідно зареєструвати користувача control на сторінці. Для цього використовується директива @Register, в якій має бути вказано збірку, простір імен і тег, що використовуються для визначення control-а на сторінці.

Для сайтів, створених в даній статті, ця директива буде виглядати наступним чином:

Assembly - назва збірки, яка містить control-и.

Namespace - простір імен, в якому визначені класи control-ів.

Простір імен ASP - це простір імен, в яке за замовчуванням поміщаються всі Web-сторінки і призначені для користувача control-и при компіляції веб-сайт.

TagPrefix - префікс, який буде використовуватися для визначення control-ів.

Після додавання директиви можна помістити на Web-сторінку будь-який користувацький control, яким він був в першому веб-сайті, так як вони всі потрапили в простір імен ASP.

Приклад визначення control-ів на сторінці:

Тепер можна запустити проект на виконання і переконатися, що доданий призначений для користувача control відображається на сторінці так само, як і звичайні призначені для користувача control-и.

Збереження збірки в GAC

Щоб відчути всі переваги повторного використання коду, можна помістити створену при компіляції першого сайту збірку в GAC. Тоді її зможуть використовувати як перший Web-сайт, так і ReusabilitySite.

За замовчуванням ця утиліта знаходиться в каталозі C: ​​\ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin

Дана утиліта дозволить створити ключі для підписування збірки. Щоб створити ключі, необхідно запустити утиліту і передати їй в командному рядку параметр -k і назва файлу:

Після виконання утиліти в кореневому каталозі диска C: з'явиться файл OneAssemble.snk, який містить ключі для підписування збірки.

Тепер у властивостях Web Deployment Project першого веб-сайту, необхідно вибрати розділ Signing, включити опцію Enable Strong naming і вказати шлях до файлу, створеному утилітою sn.exe:

Після цього необхідно скомпілювати проект.

Тепер є можливість покласти підписану збірку в GAC. Файл зборки перебуває в підкаталозі Bin каталогу, в який компілювався Web-сайт (наприклад, C: \ OneAssembleSite \ OneAssembleSite_deploy \ Debug \ bin \ OneAssembleSite.dll).

Після успішного виконання утиліти можна, використовуючи Explorer, відкрити каталог assembly в каталозі Windows і знайти створену збірку:

Зайшовши в властивості збірки, можна визначити її strong name:

Як можна переконатися, суворе ім'я збірки - «OneAssembleSite, Version = 0.0.0.0, Culture = neutral, PublicKey = a9803a0858b9e7a2».

Використання збірки з GAC

Для початку можна змусити перший Web-сайт використовувати збірку OneAssembleSite. Для цього скомпілюємо проект повторно. Скористаємося утилітою CompileFileParser, щоб позбутися від compiled-файлів і щоб заповнити файл web.config інформацією про використовувані Web-сторінках.

Далі необхідно внести зміни в файл web.config, щоб прописати збірку з GAC.

Якщо до цього сторінки підключалися, використовуючи синтаксис: