Compartir a través de


SoapExtension.GetInitializer Método

Definición

Cuando se reemplaza en una clase derivada, permite que una extensión SOAP inicialice los datos específicos de un método de servicios Web XML con un solo costo de rendimiento.

Sobrecargas

GetInitializer(Type)

Cuando se reemplaza en una clase derivada, permite que una extensión SOAP inicialice los datos específicos de una clase que implementa un servicio Web XML con un solo costo de rendimiento.

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

Cuando se reemplaza en una clase derivada, permite que una extensión SOAP inicialice los datos específicos de un método de servicios Web XML utilizando un atributo que se aplica al método de servicios Web XML con un solo costo de rendimiento.

GetInitializer(Type)

Cuando se reemplaza en una clase derivada, permite que una extensión SOAP inicialice los datos específicos de una clase que implementa un servicio Web XML con un solo costo de rendimiento.

public:
 abstract System::Object ^ GetInitializer(Type ^ serviceType);
public abstract object GetInitializer (Type serviceType);
abstract member GetInitializer : Type -> obj
Public MustOverride Function GetInitializer (serviceType As Type) As Object

Parámetros

serviceType
Type

Tipo de la clase que implementa el servicio Web XML al que se aplica la extensión SOAP.

Devoluciones

Object que la extensión SOAP inicializa para el almacenamiento en caché.

Ejemplos

En el código siguiente se muestra cómo se pueden guardar datos específicos de la extensión SOAP por cada servicio web XML. Si la extensión SOAP se configura mediante un archivo de configuración en lugar de un atributo, la extensión SOAP puede almacenar datos para cada clase a la que se aplica la extensión SOAP. En este ejemplo se guarda el nombre de un archivo en el que se registran los mensajes SOAP enviados hacia y desde el método de servicio web XML según el nombre de la clase que implementa el servicio web XML en la memoria caché. Este ejemplo de código forma parte de un ejemplo de código completo para una extensión SOAP TraceExtension que se puede encontrar en la información general de la SoapExtension clase.

   // The extension was configured to run using a configuration file instead of an attribute applied to a 
   // specific XML Web service method. Return a file name based on the class implementing the XML Web service's type.
public:
   virtual Object^ GetInitializer( Type^ WebServiceType ) override
   {
      // Return a file name to log the trace information to based on the passed in type.
      return String::Format( "C:\\{0}.log", WebServiceType->FullName );
   }
// The extension was configured to run using a configuration file instead of an attribute applied to a
// specific XML Web service method. Return a file name based on the class implementing the XML Web service's type.
public override object GetInitializer(Type WebServiceType)
{
   // Return a file name to log the trace information to based on the passed in type.
   return "C:\\" + WebServiceType.FullName + ".log";
}
' The extension was configured to run using a configuration file instead of an attribute applied to a 
' specific XML Web service method.  Return a file name based on the class implementing the XML Web service's type.
Public Overloads Overrides Function GetInitializer(WebServiceType As Type) As Object
   ' Return a file name to log the trace information to based on the passed in type.
    Return "C:\" + WebServiceType.FullName + ".log"
End Function

Comentarios

La sobrecarga de GetInitializer a la que llama ASP.NET depende de cómo se especificó la extensión SOAP. Hay dos métodos para especificar una extensión SOAP:

  • Aplique un atributo personalizado, que deriva de SoapExtensionAttribute, al método de servicio web XML individual.

  • Agregue una referencia en los archivos de configuración web.config o app.config.

Si agrega una referencia a uno de los archivos de configuración, la extensión SOAP se ejecuta para todos los servicios web XML dentro del ámbito de ese archivo de configuración. Al especificar, una extensión SOAP haciendo referencia a un archivo de configuración, ASP.NET invoca la GetInitializer sobrecarga que pasa en .Type Al especificar una extensión aplicando un atributo personalizado, ASP.NET invoca el GetInitializer objeto que pasa en y LogicalMethodInfo .SoapExtensionAttribute

Para obtener más información sobre cómo agregar extensiones SOAP a un archivo de configuración, vea Opciones de configuración para servicios web XML creados con ASP.NET.

Se aplica a

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

Cuando se reemplaza en una clase derivada, permite que una extensión SOAP inicialice los datos específicos de un método de servicios Web XML utilizando un atributo que se aplica al método de servicios Web XML con un solo costo de rendimiento.

public:
 abstract System::Object ^ GetInitializer(System::Web::Services::Protocols::LogicalMethodInfo ^ methodInfo, System::Web::Services::Protocols::SoapExtensionAttribute ^ attribute);
public abstract object GetInitializer (System.Web.Services.Protocols.LogicalMethodInfo methodInfo, System.Web.Services.Protocols.SoapExtensionAttribute attribute);
abstract member GetInitializer : System.Web.Services.Protocols.LogicalMethodInfo * System.Web.Services.Protocols.SoapExtensionAttribute -> obj
Public MustOverride Function GetInitializer (methodInfo As LogicalMethodInfo, attribute As SoapExtensionAttribute) As Object

Parámetros

methodInfo
LogicalMethodInfo

LogicalMethodInfo que representa el prototipo de función específico del método de servicios Web XML al que se aplica la extensión SOAP.

attribute
SoapExtensionAttribute

SoapExtensionAttribute que se aplica al método de servicios Web XML.

Devoluciones

Object que la extensión SOAP inicializa para el almacenamiento en caché.

Ejemplos

En el código siguiente se muestra cómo puede obtener datos específicos de la extensión SOAP pasados mediante una clase que deriva de SoapExtensionAttributey, a continuación, almacenar en caché esos datos en GetInitializer. Este ejemplo de código forma parte de un ejemplo de código completo para una TraceExtension extensión SOAP que se puede encontrar en la información general de la SoapExtension clase. Este ejemplo de código se basa en un TraceExtensionAttribute objeto que se pasa al attribute parámetro . En el ejemplo de código completo, TraceExtensionAttribute se deriva de SoapExtensionAttribute y agrega una Filename propiedad , que es lo que GetInitializer almacena en la memoria caché.

public:
   // When the SOAP extension is accessed for the first time, cache the 
   // file name passed in by the SoapExtensionAttribute.    
   virtual Object^ GetInitializer( LogicalMethodInfo^ /*methodInfo*/, SoapExtensionAttribute^ attribute ) override
   {
      return (dynamic_cast<TraceExtensionAttribute^>(attribute))->Filename;
   }
// When the SOAP extension is accessed for the first time, cache the
// file name passed in by the SoapExtensionAttribute.
public override object GetInitializer(LogicalMethodInfo methodInfo,
    SoapExtensionAttribute attribute)
{
    return ((TraceExtensionAttribute) attribute).Filename;
}
' When the SOAP extension is accessed for the first time, 
' cache the file name passed in by the SoapExtensionAttribute.

Public Overloads Overrides Function GetInitializer( _
    methodInfo As LogicalMethodInfo, _
    attribute As SoapExtensionAttribute) As Object    
    Return CType(attribute, TraceExtensionAttribute).Filename
End Function

Comentarios

Si la extensión SOAP está configurada mediante un archivo de configuración, vea la GetInitializer sobrecarga que acepta .Type

Una extensión SOAP tiene tres oportunidades para inicializar los datos y todos tienen diferentes propósitos:

  • Constructor de clase: se llama al constructor de clase cada vez que se crea una instancia de una extensión SOAP y se usa normalmente para inicializar variables miembro.

  • GetInitializer - GetInitializerSin embargo, se llama a una sola vez, la primera vez que se realiza una solicitud SOAP a un método de servicios web XML. Si se aplica un atributo personalizado al método de servicio web XML, se invoca el GetInitializer método . Esto permite a la extensión SOAP interrogar el LogicalMethodInfo de un método de servicio web XML para obtener información de prototipo o tener acceso a datos específicos de la extensión pasados por una clase derivada de SoapExtensionAttribute. El valor devuelto se almacena en caché mediante ASP.NET y se pasa a métodos posteriores Initialize . Por lo tanto, la inicialización realizada en GetInitializer se encapsula esencialmente en un acierto de rendimiento único.

  • Initialize - Initialize se llama cada vez que se realiza una solicitud SOAP a un método de servicio web XML, pero tiene una ventaja sobre el constructor de clase, en que el Object inicializado en GetInitializer se pasa a él.

Consulte también

Se aplica a