Структура 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.
Якщо до цього сторінки підключалися, використовуючи синтаксис: