XML Web-службы в Microsoft SQL Server 2005 - Visual Studio .NET 2005
ОГЛАВЛЕНИЕ
Visual Studio .NET 2005
Генератор клиентского кода Visual Studio .NET 2005 прекрасно работает с WSDL-файлом Yukon. Последовательность действий такова. С помощью диалогового окна Add Reference или утилиты wsdl.exe мы генерируем клиентский код, далее создаем экземпляр proxy-класса, присваиваем его свойству Credentials соответствующее значение (это обязательно) и вызываем Web-метод.
Необходимо учесть, что при использовании простого WSDL-документа результаты выборки будут представлены в виде массива экземпляров типа XMLElement, а скалярные значения — в виде экземпляров шаблона System.Nullable(of T). При использовании сложного WSDL-документа результаты выборки будут представлены в виде массива объектов типа System.Data.DataSet — содержащим собственно данные, Integer — содержащим результирующий код (элемент SqlResultCode) и SqlRowCount — содержащим количество выбранных строк. Скалярные значения будут представлены экземплярами из пространства имен System.Data.SqlTypes.
Если вы указали аутентификацию MIXED при создании конечной точки, тогда вам необходимо передавать с каждым SOAP-запросом информацию об удостоверении пользователя в виде SOAP-заголовка — Security. Этот заголовок является частью спецификации WS-Security; используя механизм XML сериализации, создать его довольно просто (пример реализации данного заголовка с помощью IXMLSerializable можно найти в BOL).
Для использования заголовка необходимо изменить стандартный код, генерируемый средой разработки: нужно добавить к proxy-классу элемент типа Security, указать атрибут SOAPHeader для методов proxy-класса, в конструктор которого передать название элемента заголовка. После создания экземпляра proxy-класса, но перед вызовом соответствующего метода, необходимо заполнить поля этого заголовка. Тип пароля — http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText
Кроме этого, так как необходимо использовать SSL для аутентификации MIXED, требуется статическому свойству Net.ServicePointManager.CertificatePolicy присвоить экземпляр следующего класса:
Friend Class MyCertValidation
Implements Net.ICertificatePolicy
Public Function CheckValidationResult(ByVal srvPoint As System.Net.ServicePoint,
ByVal certificate As System.Security.Cryptography
.X509Certificates.X509Certificate,
ByVal request As System.Net.WebRequest, ByVal certificateProblem As Integer) As
Boolean Implements System.Net.ICertificatePolicy.CheckValidationResult
Return True
End Function
End Class
Данный класс переопределяет всего одну функцию, которая возвращает true. Это позволяет использовать сертификаты SSL, которые не являются доверенными.