dev.net.ua

Українська Спільнота Розробникiв
 
Ласкаво просимо до dev.net.ua Увійти | Приєднатися | Допомога | Увійти Live ID
в Пошук

Oleg Repin

Расширение графического интерфейса URL Rewrite модуля

Что это за модуль? Какие проблемы позволяет решить? О нем уже писалось раньше,  и чтобы вспомнить, с чем же мы все-таки имеем дело, советую вначале прочитать этот пост.

                Также хочу отметить, что недавно вышел Go Live релиз URL Rewrite модуля. С информацией по релизу можно ознакомиться тут.

                Скачать новую версию модуля:

                      Microsoft URL Rewrite Module for IIS 7.0 Go Live (x86)

                      Microsoft URL Rewrite Module for IIS 7.0 Go Live (x64)

                По умолчанию модуль URL Rewrite имеет 4 шаблона создания правил перезаписи URL:

·         Blank rule

·         User friendly URL

·         Rule with rewrite map

·         Request blocking

Я покажу Вам как просто можно расширить имеющийся набор шаблонов, написав свой собственный.

                Запускаем студию и создаем новый проект. В качестве типа проекта выбираем Class Library, нажимаем OK.

Создаем новый проект

               Удаляем файл Class1.cs, добавленный в проект по умолчанию. Добавляем ссылку на Microsoft.Web.Management.Rewrite.Client.dll. Если у вас на машине установлен URL Rewrite модуль, то эту сборку можно будет найти в GAC, если же нет, то ее можно скачать, перейдя по ссылке. Также необходимо добавить ссылку на Microsoft.Web.Management.dll – эта дллка содержит классы необходимые для создания модуля, ее можно найти в папке \Windows\system32\inetsrv. Так как расширение графического интерфейса будет основано на WinForms, не забываем добавлять ссылку на System.Windows.Forms.dll.

                Назначаем сборке строгое имя.

Назначаем строгое имя

               Выбираем в свойствах проекта пункт Build Events и в командную строку на Post-build event вставляем скрипт, который установит нашу сборку в GAC.

                "%ProgramFiles%\Microsoft SDKs\Windows\v6.0A\bin\gacutil.exe" /if "$(TargetPath)"

Установка сборки в GAC

               Создаем ModuleProvider, являющийся главной точкой входа при регистрации модулей. Потом мы пропишем его в Administration.config.

using System;

using Microsoft.Web.Management.Server;

 

namespace MyDemoTemplate

{

    internal sealed class DemoModuleProvider : ModuleProvider

    {

        public override Type ServiceType { get { return null; } }

        public override ModuleDefinition GetModuleDefinition(IManagementContext context)

        {

            return new ModuleDefinition(Name,

                                    typeof(DemoModule).AssemblyQualifiedName);

        }

        public override bool SupportsScope(ManagementScope scope) { return true; }

    }

}

Добавляем в проект файл DemoModule.cs и помещаем в него код, регистрирующий расширение графического интерфейса в модуле URL Rewrite.

using System;

using Microsoft.Web.Management.Client;

using Microsoft.Web.Management.Server;

using Microsoft.Web.Management.Iis.Rewrite.RewriteTemplates;

 

namespace MyDemoTemplate

{

    internal sealed class DemoModule : Module

    {

        protected override void Initialize(IServiceProvider serviceProvider, ModuleInfo moduleInfo)

        {

            base.Initialize(serviceProvider, moduleInfo);

 

            Connection connection = (Connection)GetService(typeof(Connection));

 

            connection.Initialized += delegate

            {

                Microsoft.Web.Management.Client.Module rewriteModule =

                                           connection.Modules["Rewrite"] as Module;

                if (rewriteModule == null)

                {

                    // URL Rewrite модуль не установлен правильно

                    return;

                }

 

                DemoRewriteTemplateFeature demoFeature =

                                    new DemoRewriteTemplateFeature(rewriteModule);

 

                IExtensibilityManager extensibilityManager = (IExtensibilityManager)

            demoFeature.ServiceProvider.GetService(typeof(IExtensibilityManager));

 

                extensibilityManager.RegisterExtension(typeof(RewriteTemplateFeature), demoFeature);

            };

        }

    }

}

                Создаем новый шаблон для модуля URL Rewrite. Для этого необходимо наследоваться от класса RewriteTemplateFeature. В этом примере при выборе нашего шаблона будет отображаться пустая форма с текстом «My Demo Template» (метод Run).

using System.Windows.Forms;

using Microsoft.Web.Management.Iis.Rewrite.RewriteTemplates;

using Microsoft.Web.Management.Client;

 

namespace MyDemoTemplate

{

    internal sealed class DemoRewriteTemplateFeature : RewriteTemplateFeature

    {

        private const string FeatureTitle = "My Demo Template";

        private const string FeatureDescription = "Расширение графического интерфейса URL Rewrite модуля.";

 

        public DemoRewriteTemplateFeature(Module module)

            : base(module, FeatureTitle, FeatureDescription, null, null)

        {

        }

 

        public override void Run()

        {

            Form form = new Form();

            form.Text = "My Demo Template";

            form.StartPosition = FormStartPosition.CenterParent;

            form.ShowDialog();

        }

    }

}            

                И в заключение, чтобы посмотреть результат, необходимо, чтобы наша сборка была в GAC, и  наш провайдер был прописан в файле Administration.config.

               <add name="MyDemoTemplate" type="MyDemoTemplate.DemoModuleProvider, MyDemoTemplate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=622da6f0be08ecf7" />

               Теперь, мы увидим наш шаблон, если зайдем в модуль URL Rewrite и нажмем добавить правило.

Создаем новое правило

               А при выборе шаблона появится наша форма.

Наша форма

               При написании использовались материалы с блога Daniel Vasquez Lopez's, а так же с How to Create a Simple IIS Manager Module.

               Спасибо за внимание…

Опубліковані Friday, October 03, 2008 12:07 AM від Oleg Repin
Помічено як: , , ,

Коментарі

 

Brand сказав:

Последние 2 картинки не открываются

October 3, 2008 6:24 AM
 

Sergey Lutay сказав:

Открываются.

October 3, 2008 7:48 AM
 

Leshchinsky сказав:

рефреш ctrl-f5 помогает

October 3, 2008 7:53 AM
 

Brand сказав:

Сейчас вообще ни одна картинка не открывается

October 4, 2008 8:49 AM
 

Oleg Repin сказав:

Наверное какие-то проблемы с порталом

October 4, 2008 11:33 AM
 

Denis Reznik сказав:

Возможно, но всё же ctrl-F5 помогает :)

October 4, 2008 11:45 AM
 

Brand сказав:

Не помогает :)

По запросу картинки отдается ошибка 404

October 5, 2008 11:20 AM
 

Oleg Repin сказав:

Перезалил картинки, теперь должно быть все ОК.

October 6, 2008 6:22 AM
Анонімні коментарі деактивовані. Увійдіть або Зареєструйтесь щоб мати доступ до ресурсів Спільноти.