SoapExtension.GetInitializer Metodo

Definizione

Quando se ne esegue l'override in una classe derivata, consente a un'estensione SOAP di inizializzare i dati specifici di un servizio Web XML, incidendo una sola volta sulle prestazioni.

Overload

GetInitializer(Type)

Quando se ne esegue l'override in una classe derivata, consente a un'estensione SOAP di inizializzare i dati specifici di una classe implementando un servizio Web XML, incidendo una sola volta sulle prestazioni.

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

Quando se ne esegue l'override in una classe derivata, consente a un'estensione SOAP di inizializzare i dati specifici di un servizio Web XML utilizzando un attributo applicato al metodo di servizio Web XML, incidendo una sola volta sulle prestazioni.

GetInitializer(Type)

Quando se ne esegue l'override in una classe derivata, consente a un'estensione SOAP di inizializzare i dati specifici di una classe implementando un servizio Web XML, incidendo una sola volta sulle prestazioni.

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

Parametri

serviceType
Type

Tipo della classe che implementa il servizio Web XML a cui viene applicata l'estensione SOAP.

Restituisce

Oggetto Object inizializzato dall'estensione SOAP per l'inserimento nella cache.

Esempio

Il codice seguente illustra come salvare dati specifici dell'estensione SOAP in base al servizio Web XML. Se l'estensione SOAP è configurata usando un file di configurazione anziché un attributo, l'estensione SOAP può archiviare i dati per ogni classe a cui viene applicata l'estensione SOAP. In questo esempio viene salvato il nome di un file in cui registrare i messaggi SOAP inviati a e dal metodo del servizio Web XML in base al nome della classe che implementa il servizio Web XML nella cache. Questo esempio di codice fa parte di un esempio di codice completo per un'estensione SOAP TraceExtension disponibile nella panoramica della SoapExtension classe.

   // 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

Commenti

L'overload di GetInitializer che viene chiamato da ASP.NET dipende dal modo in cui è stata specificata l'estensione SOAP. Esistono due metodi per specificare un'estensione SOAP:

  • Applicare un attributo personalizzato, derivando da SoapExtensionAttribute, al singolo metodo di servizio Web XML.

  • Aggiungere un riferimento nei file di configurazione web.config o app.config.

Se si aggiunge un riferimento a uno dei file di configurazione, l'estensione SOAP viene eseguita per tutti i servizi Web XML nell'ambito di tale file di configurazione. Quando si specifica, un'estensione SOAP facendo riferimento a un file di configurazione, ASP.NET richiama l'overload GetInitializer che passa in un Typeoggetto . Quando si specifica un'estensione applicando un attributo personalizzato, ASP.NET richiama l'oggetto GetInitializer che passa in un LogicalMethodInfo oggetto e un SoapExtensionAttribute.

Per informazioni dettagliate sull'aggiunta di estensioni SOAP a un file di configurazione, vedere Opzioni di configurazione per i servizi Web XML creati tramite ASP.NET.

Si applica a

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

Quando se ne esegue l'override in una classe derivata, consente a un'estensione SOAP di inizializzare i dati specifici di un servizio Web XML utilizzando un attributo applicato al metodo di servizio Web XML, incidendo una sola volta sulle prestazioni.

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

Parametri

methodInfo
LogicalMethodInfo

Oggetto LogicalMethodInfo che rappresenta il prototipo di funzione specifico del metodo di servizio Web XML a cui viene applicata l'estensione SOAP.

attribute
SoapExtensionAttribute

Oggetto SoapExtensionAttribute applicato al metodo di servizio Web XML.

Restituisce

Oggetto Object inizializzato dall'estensione SOAP per l'inserimento nella cache.

Esempio

Il codice seguente illustra come ottenere dati specifici dell'estensione SOAP passati usando una classe derivata da SoapExtensionAttributee quindi memorizzare nella cache i dati in GetInitializer. Questo esempio di codice fa parte di un esempio di codice completo per un'estensione TraceExtension SOAP disponibile nella panoramica della SoapExtension classe. Questo esempio di codice si basa su un TraceExtensionAttribute oggetto passato al attribute parametro. Nell'esempio di codice completo deriva TraceExtensionAttributeSoapExtensionAttribute da e aggiunge una Filename proprietà, ovvero ciò che GetInitializer archivia nella cache.

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

Commenti

Se l'estensione SOAP è configurata usando un file di configurazione, vedere l'overload GetInitializer che accetta un Typeoggetto .

Un'estensione SOAP offre tre opportunità per inizializzare i dati e hanno tutti scopi diversi:

  • Costruttore di classi: il costruttore della classe viene chiamato ogni volta che un'estensione SOAP viene creata un'istanza e viene in genere usata per inizializzare le variabili membro.

  • GetInitializer - GetInitializer, tuttavia, viene chiamato una sola volta, la prima volta che viene effettuata una richiesta SOAP a un metodo di servizi Web XML. Se viene applicato un attributo personalizzato al metodo del servizio Web XML, viene richiamato il GetInitializer metodo . Ciò consente all'estensione SOAP di interrogare l'oggetto LogicalMethodInfo di un metodo di servizio Web XML per le informazioni sui prototipi o di accedere a dati specifici dell'estensione passati da una classe derivata da SoapExtensionAttribute. Il valore restituito viene memorizzato nella cache da ASP.NET e passato ai metodi successivi Initialize . Di conseguenza, l'inizializzazione eseguita in è incapsulata essenzialmente in GetInitializer un colpo di prestazioni one-time.

  • Initialize - Initialize viene chiamato ogni volta che viene eseguita una richiesta SOAP a un metodo di servizio Web XML, ma ha un vantaggio sul costruttore della classe, in quanto l'inizializzato Object in GetInitializer viene passato a esso.

Vedi anche

Si applica a