Удаляем файл 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)"
Создаем 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 и нажмем добавить правило.
А при выборе шаблона появится наша форма.
Спасибо за внимание…