Листинг C#-кодов для образца библиотеки классов SOAP-заголовка SQL
В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется.
![]() |
---|
Инструкции для включения следующего кода образца библиотеки в проект Visual Studio представлены в разделе Добавление SOAP-заголовков в клиентские приложения. |
using System;using System.Web;using System.Web.Services;using System.Xml;using System.Xml.Schema;using System.Xml.Serialization;namespace SqlSoapHeader{ /// <summary> /// This is a sample implementation of the SQL 2005 Security SOAP Header in the SOAP 1.1 format. /// This class inherites from SoapHeader as all SOAP Header classes need to do. /// This class also implements the IXmlSerializable so the client can control the XML serialization format. /// This class is meant to be used as a SOAP header only. /// </summary> [XmlRoot("Security", Namespace = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd")] public class Security : System.Web.Services.Protocols.SoapHeader, System.Xml.Serialization.IXmlSerializable { // private member variables to hold the user input values. private String WssePassword; private String SqlOldPassword; private String WsseUsername; // the set of string const that is required for serialization. private const String strxmlns = "xmlns"; private const String strsqlns = "https://schemas.microsoft.com/sqlserver/2004/SOAP"; private const String strwssens = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"; private const String strsql = "sql"; private const String strwsse = "wsse"; private const String strUsernameToken = "UsernameToken"; private const String strUsername = "Username"; private const String strPassword = "Password"; private const String strType = "Type"; private const String strPasswordText = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"; private const String strOldPassword = "OldPassword"; public Security() { // setting default values this.WssePassword = null; this.SqlOldPassword = null; this.WsseUsername = null; } // IXmlSerializable methods public XmlSchema GetSchema() { // Visual Studio .NET 2003 requires an ID value for the XmlSchema // This is the minimum implementation required for this method. // Note: this method is not really used anywhere. XmlSchema _xmlSchema = new XmlSchema(); _xmlSchema.Id = "Sql 2005"; return _xmlSchema; } public void ReadXml(XmlReader reader) { // not implemented } public void WriteXml(XmlWriter writer) { // The SOAP header serialization context to passed to this method after the class name element // node has been opened (ie. WriteStartElement("Security")) // Writing additional attributes to the "Security" element // xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" // xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" writer.WriteAttributeString(strxmlns, strwsse, null, strwssens); writer.WriteAttributeString(strxmlns, strwssens); // check for SOAP header specific attributes if (this.MustUnderstand) { writer.WriteAttributeString("mustUnderstand", "https://schemas.xmlsoap.org/soap/envelope/", this.EncodedMustUnderstand); } if ((null != this.Actor) && ("" != this.Actor)) { writer.WriteAttributeString("actor", "https://schemas.xmlsoap.org/soap/envelope/", this.Actor); } // <wsse:UsernameToken> writer.WriteStartElement(strwsse, strUsernameToken, strwssens); // <wsse:Username></wsse:Username> writer.WriteStartElement(strwsse, strUsername, strwssens); if (null == this.WsseUsername) writer.WriteAttributeString("xsi", "nil", "http://www.w3.org/2001/XMLSchema-instance", "true"); else writer.WriteString(this.WsseUsername); writer.WriteEndElement(); // <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"></wsse:Password> writer.WriteStartElement(strwsse, strPassword, strwssens); writer.WriteAttributeString(strType, strPasswordText); if (null == this.WssePassword) writer.WriteAttributeString("xsi", "nil", "http://www.w3.org/2001/XMLSchema-instance", "true"); else writer.WriteString(this.WssePassword); writer.WriteEndElement(); // xmlns:sql="https://schemas.microsoft.com/sqlserver/2004/SOAP" // <sql:OldPassword Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">pass-word1</sql:OldPassword> if (null != this.SqlOldPassword) { writer.WriteStartElement(strsql, strOldPassword, strsqlns); writer.WriteAttributeString(strxmlns, strsql, null, strsqlns); writer.WriteAttributeString(strType, strPasswordText); writer.WriteString(this.SqlOldPassword); writer.WriteEndElement(); } //</wsse:UsernameToken> writer.WriteEndElement(); } // Property accessors public String Password { get { return this.WssePassword; } set { this.WssePassword = value; } } public String OldPassword { get { return this.SqlOldPassword; } set { this.SqlOldPassword = value; } } public String Username { get { return this.WsseUsername; } set { this.WsseUsername = value; } } } // end of public class Security /// <summary> /// This is a sample implementation of the SQL 2005 initialDatabase SQL options SOAP Header. /// This sample code is generated by taking the schema definition from the WSDL and running through the /// .NET Frameworks SDK "xsd.exe" tool. /// </summary> [System.Xml.Serialization.XmlTypeAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options")] [System.Xml.Serialization.XmlRootAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options", IsNullable = false)] public class initialDatabase : System.Web.Services.Protocols.SoapHeader { /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public string value; /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] [System.ComponentModel.DefaultValueAttribute(false)] public bool optional = false; /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public string filename; } // end of public class initialDatabase /// <summary> /// This is a sample implementation of the SQL 2005 initialLanguage SQL options SOAP Header. /// This sample code is generated by taking the schema definition from the WSDL and running through the /// .NET Frameworks SDK "xsd.exe" tool. /// </summary> [System.Xml.Serialization.XmlTypeAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options")] [System.Xml.Serialization.XmlRootAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options", IsNullable = false)] public class initialLanguage : System.Web.Services.Protocols.SoapHeader { /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public string value; /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] [System.ComponentModel.DefaultValueAttribute(false)] public bool optional = false; } // end of public class initialLanguage /// <summary> /// This is a sample implementation of the SQL 2005 environmentChangeNotifications SQL options SOAP Header. /// This sample code is generated by taking the schema definition from the WSDL and running through the /// .NET Frameworks SDK "xsd.exe" tool. /// </summary> [System.Xml.Serialization.XmlTypeAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options")] [System.Xml.Serialization.XmlRootAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options", IsNullable = false)] public class environmentChangeNotifications : System.Web.Services.Protocols.SoapHeader { /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] [System.ComponentModel.DefaultValueAttribute(false)] public bool databaseChange = false; /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] [System.ComponentModel.DefaultValueAttribute(false)] public bool languageChange = false; /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] [System.ComponentModel.DefaultValueAttribute(false)] public bool transactionBoundary = false; } // end of public class environmentChangeNotifications /// <summary> /// This is a sample implementation of the SQL 2005 applicationName SQL options SOAP Header. /// This sample code is generated by taking the schema definition from the WSDL and running through the /// .NET Frameworks SDK "xsd.exe" tool. /// </summary> [System.Xml.Serialization.XmlTypeAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options")] [System.Xml.Serialization.XmlRootAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options", IsNullable = false)] public class applicationName : System.Web.Services.Protocols.SoapHeader { /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public string value; } // end of public class applicationName /// <summary> /// This is a sample implementation of the SQL 2005 hostName SQL options SOAP Header. /// This sample code is generated by taking the schema definition from the WSDL and running through the /// .NET Frameworks SDK "xsd.exe" tool. /// </summary> [System.Xml.Serialization.XmlTypeAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options")] [System.Xml.Serialization.XmlRootAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options", IsNullable = false)] public class hostName : System.Web.Services.Protocols.SoapHeader { /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public string value; } // end of public class hostName /// <summary> /// This is a sample implementation of the SQL 2005 clientPID SQL options SOAP Header. /// This sample code is generated by taking the schema definition from the WSDL and running through the /// .NET Frameworks SDK "xsd.exe" tool. /// </summary> [System.Xml.Serialization.XmlTypeAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options")] [System.Xml.Serialization.XmlRootAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options", IsNullable = false)] public class clientPID : System.Web.Services.Protocols.SoapHeader { /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public long value; } // end of public class clientPID /// <summary> /// This is a sample implementation of the SQL 2005 clientNetworkID SQL options SOAP Header. /// This sample code is generated by taking the schema definition from the WSDL and running through the /// .NET Frameworks SDK "xsd.exe" tool. /// </summary> [System.Xml.Serialization.XmlTypeAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options")] [System.Xml.Serialization.XmlRootAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options", IsNullable = false)] public class clientNetworkID : System.Web.Services.Protocols.SoapHeader { /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute(DataType = "base64Binary")] public System.Byte[] value; } // end of public class clientNetworkID /// <summary> /// This is a sample implementation of the SQL 2005 clientInterface SQL options SOAP Header. /// This sample code is generated by taking the schema definition from the WSDL and running through the /// .NET Frameworks SDK "xsd.exe" tool. /// </summary> [System.Xml.Serialization.XmlTypeAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options")] [System.Xml.Serialization.XmlRootAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options", IsNullable = false)] public class clientInterface : System.Web.Services.Protocols.SoapHeader { /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public string value; } // end of public class clientInterface /// <summary> /// This is a sample implementation of the SQL 2005 notificationRequest SQL options SOAP Header. /// This sample code is generated by taking the schema definition from the WSDL and running through the /// .NET Frameworks SDK "xsd.exe" tool. /// </summary> [System.Xml.Serialization.XmlTypeAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options")] [System.Xml.Serialization.XmlRootAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options", IsNullable = false)] public class notificationRequest : System.Web.Services.Protocols.SoapHeader { /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public string notificationId; /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public string deliveryService; /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute(DataType = "integer")] public string timeout; } // end of public class notificationRequest /// <summary> /// This is a sample implementation of the SQL 2005 sqlSession SQL options SOAP Header. /// This sample code is generated by taking the schema definition from the WSDL and running through the /// .NET Frameworks SDK "xsd.exe" tool. /// </summary> [System.Xml.Serialization.XmlTypeAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options")] [System.Xml.Serialization.XmlRootAttribute(Namespace = "https://schemas.microsoft.com/sqlserver/2004/SOAP/Options", IsNullable = false)] public class sqlSession : System.Web.Services.Protocols.SoapHeader { /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] [System.ComponentModel.DefaultValueAttribute(false)] public bool initiate = false; /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] [System.ComponentModel.DefaultValueAttribute(false)] public bool terminate = false; /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute(DataType = "base64Binary")] public System.Byte[] sessionId; /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public int timeout; /// <remarks/> [System.Xml.Serialization.XmlIgnoreAttribute()] public bool timeoutSpecified; /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute(DataType = "base64Binary")] public System.Byte[] transactionDescriptor; } // end of public class sqlSession}