Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В примере ServiceValidation показано, как использовать настраиваемое поведение для проверки служб на компьютере, чтобы убедиться, что они соответствуют определенным критериям. В этом примере службы проверяются пользовательским поведением, сканируя каждую конечную точку службы и проверяя, содержат ли они безопасные элементы привязки. Этот пример основан на Кратком руководстве.
Замечание
Процедура установки и инструкции по сборке для этого примера находятся в конце этого раздела.
Пользовательское поведение валидации конечной точки
Добавив пользовательский код в Validate метод, содержащийся в интерфейсе IServiceBehavior , настраиваемое поведение можно предоставить службе или конечной точке для выполнения пользовательских действий. Следующий код используется для выполнения цикла по каждой конечной точке, содержащейся в службе, чтобы искать в коллекциях привязок безопасные привязки.
public void Validate(ServiceDescription serviceDescription,
ServiceHostBase serviceHostBase)
{
// Loop through each endpoint individually, gathering their
// binding elements.
foreach (ServiceEndpoint endpoint in serviceDescription.Endpoints)
{
secureElementFound = false;
// Retrieve the endpoint's binding element collection.
BindingElementCollection bindingElements =
endpoint.Binding.CreateBindingElements();
// Look to see if the binding elements collection contains any
// secure binding elements. Transport, Asymmetric, and Symmetric
// binding elements are all derived from SecurityBindingElement.
if ((bindingElements.Find<SecurityBindingElement>() != null) || (bindingElements.Find<HttpsTransportBindingElement>() != null) || (bindingElements.Find<WindowsStreamSecurityBindingElement>() != null) || (bindingElements.Find<SslStreamSecurityBindingElement>() != null))
{
secureElementFound = true;
}
// Send a message to the system event viewer when an endpoint is deemed insecure.
if (!secureElementFound)
throw new Exception(System.DateTime.Now.ToString() + ": The endpoint \"" + endpoint.Name + "\" has no secure bindings.");
}
}
Добавляя следующий код в файл Web.config, добавляет компонент поведения serviceValidate, чтобы служба могла распознать.
<system.serviceModel>
<extensions>
<behaviorExtensions>
<add name="endpointValidate" type="Microsoft.ServiceModel.Samples.EndpointValidateElement, endpointValidate, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
</extensions>
...
</system.serviceModel>
После добавления расширения поведения в службу теперь можно добавить endpointValidate поведение в список поведений в файле Web.config и таким образом в службу.
<behaviors>
<serviceBehaviors>
<behavior name="CalcServiceSEB1">
<serviceMetadata httpGetEnabled="true" />
<endpointValidate />
</behavior>
</serviceBehaviors>
</behaviors>
Поведение и расширения, добавленные в файл Web.config, применяются к отдельным службам, а добавленные в файл Machine.config — к каждой службе, активной на компьютере.
Замечание
При добавлении поведения ко всем службам рекомендуется создать резервную копию файла Machine.config перед внесением изменений.
Теперь запустите клиент, предоставленный в каталоге client\bin этого примера. Исключение возникает со следующим сообщением: "Не удалось активировать запрошенную службу http://localhost/servicemodelsamples/service.svc ". Ожидается, что конечная точка считается небезопасной для конечной точки, проверяющей поведение, и предотвращает запуск службы. Это поведение также вызывает внутреннее исключение, описывающее, какая конечная точка небезопасна, и записывает сообщение в системное средство просмотра событий под источником "System.ServiceModel 4.0.0.0" и в категории "WebHost". В этом примере также можно включить трассировку на сервисе. Это позволяет пользователю просматривать исключения, генерируемые поведением проверки конечной точки, открывая полученные трассировки служб через средство просмотра трассировок службы.
Просмотр сообщений об исключениях проверки конечной точки в средстве просмотра событий.
Щелкните меню "Пуск " и выберите "Выполнить".
Введите
eventvwrи нажмите кнопку "ОК".В окне просмотра событий щелкните "Приложение".
Дважды щелкните недавно добавленное событие "System.ServiceModel 4.0.0.0" в категории "WebHost" в окне приложения для просмотра небезопасных сообщений конечной точки.
Настройка, сборка и запуск примера
Убедитесь, что вы выполнили процедуру настройки One-Time для образцов Windows Communication Foundation.
Чтобы создать версию решения на C# или Visual Basic .NET, следуйте инструкциям по сборке примеров Windows Communication Foundation .
Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в запуска примеров Windows Communication Foundation.