Разработка распределенных приложений в Microsoft.NET Framework



         

Реализация нестандартного расширения WSE - часть 3


[XmlRoot("TimeIntervals")] public class TimeIntervals: List<TimeInterval> { public TimeIntervals() { } public bool Check(DateTime Time) { foreach (TimeInterval interval in this) if (interval.Check(Time)) return true; return false; } } }

Файлы сборки с расширениями WSE удобно поместить в глобальный кеш сборок GAC. Нижеследующий make файл создает и регистрирует сборку в GAC при команде nmake &amp;&amp; nmake install.

# Файл: makefile all: Seva.WS.TimeAssertion.dll Seva.WS.TimeAssertion.dll: TimeAssertion.cs TimeAssertion.key csc /t:library /out:Seva.WS.TimeAssertion.dll /keyfile:TimeAssertion.key /r:Microsoft.Web.Services3.dll TimeAssertion.cs TimeAssertion.key: sn -k TimeAssertion.key install: gacutil -nologo -i Seva.WS.TimeAssertion.dll`

Для использования данной политики нужно выполнить следующие действия.

1. Создать файл с допустимым местным временем использования веб службы, например такой.

<?xml version="1.0" encoding="utf-8"?> <TimeIntervals> <TimeInterval Inverse="true" From="09:00:00" To="20:00:00" /> <TimeInterval Inverse="false" From="13:00:00" To="13:30:00" /> </TimeIntervals>

2. Создать файл wse3policyCache.config на сервере со следующим содержанием (для простоты предполагается отсутствие иных политик, также следует указать реальное значение публичного ключа сборки с созданным расширением WSE).

<policies xmlns="http://schemas.microsoft.com/wse/2005/06/policy"> <extensions> <extension name="timeIntervals" type="Seva.WS.Assertions.TimeAssertion, Seva.WS.TimeAssertion, Version=1.0.0.0, Culture=neutral, PublicKeyToken=..." /> </extensions> <policy name="MyServicePolicy"> <timeIntervals file="C:\Inetpub\wwwroot\timeschema.config" /> </policy> </policy> </policies>

Вместо MyServicePolicy должно быть указано название политики, указанной в атрибуте Policy класса веб службы.




Содержание  Назад  Вперед