Condividi tramite


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

Nel codice seguente viene illustrato 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 da e verso il 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 del 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 oggetto Type. Quando si specifica un'estensione applicando un attributo personalizzato, ASP.NET richiama l'oggetto GetInitializer che passa un LogicalMethodInfo oggetto e un oggetto 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 che deriva 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 TraceExtensionAttribute da SoapExtensionAttribute e aggiunge una Filename proprietà , ovvero l'archivio GetInitializer 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 .Type

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

  • Costruttore di classe: il costruttore della classe viene chiamato ogni volta che viene creata un'istanza di un'estensione SOAP e viene in genere usato 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 un attributo personalizzato viene applicato al metodo del servizio Web XML, viene richiamato il GetInitializer metodo . In questo modo l'estensione SOAP può interrogare l'oggetto LogicalMethodInfo di un metodo di servizio Web XML per informazioni sul prototipo o per accedere ai 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 . Pertanto, l'inizializzazione eseguita in GetInitializer viene incapsulata essenzialmente in un hit di prestazioni una tantum.

  • Initialize - Initialize viene chiamato ogni volta che viene effettuata una richiesta SOAP a un metodo del servizio Web XML, ma presenta un vantaggio rispetto al costruttore della classe, in quanto l'oggetto Object inizializzato in GetInitializer viene passato.

Vedi anche

Si applica a