SoapExtension.GetInitializer Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Quando sottoposto a override in una classe derivata, consente a un'estensione SOAP di inizializzare i dati specifici di un metodo del servizio Web XML con un costo di prestazioni occasionale.
Overload
| Nome | Descrizione |
|---|---|
| GetInitializer(Type) |
Quando sottoposto a override in una classe derivata, consente a un'estensione SOAP di inizializzare i dati specifici di una classe che implementa un servizio Web XML a un costo di prestazioni occasionale. |
| GetInitializer(LogicalMethodInfo, SoapExtensionAttribute) |
Quando sottoposto a override in una classe derivata, consente a un'estensione SOAP di inizializzare i dati specifici di un metodo del servizio Web XML utilizzando un attributo applicato al metodo del servizio Web XML a un costo delle prestazioni una tantum. |
GetInitializer(Type)
Quando sottoposto a override in una classe derivata, consente a un'estensione SOAP di inizializzare i dati specifici di una classe che implementa un servizio Web XML a un costo di prestazioni occasionale.
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.
Valori restituiti
Oggetto Object inizializzato dall'estensione SOAP per la memorizzazione nella cache.
Esempio
Il codice seguente illustra come salvare dati specifici dell'estensione SOAP in base al servizio Web XML. Se l'estensione SOAP viene 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 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 del file di configurazione. Quando si specifica, un'estensione SOAP facendo riferimento a un file di configurazione, ASP.NET richiama l'overload GetInitializer che passa un Type. Quando si specifica un'estensione applicando un attributo personalizzato, ASP.NET richiama l'GetInitializer che passa un LogicalMethodInfo 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 sottoposto a override in una classe derivata, consente a un'estensione SOAP di inizializzare i dati specifici di un metodo del servizio Web XML utilizzando un attributo applicato al metodo del servizio Web XML a un costo delle prestazioni una tantum.
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 per il metodo del servizio Web XML a cui viene applicata l'estensione SOAP.
- attribute
- SoapExtensionAttribute
Oggetto SoapExtensionAttribute applicato al metodo del servizio Web XML.
Valori restituiti
Oggetto Object inizializzato dall'estensione SOAP per la memorizzazione nella cache.
Esempio
Nel codice seguente viene illustrato 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 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 oggetto 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 le 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 Initialize successivi. Pertanto, l'inizializzazione eseguita in GetInitializer viene incapsulata essenzialmente in un hit delle prestazioni monouso.
Initialize - Initialize viene chiamato ogni volta che viene effettuata una richiesta SOAP a un metodo di servizio Web XML, ma ha un vantaggio rispetto al costruttore della classe, in quanto viene passato l'inizializzato Object in GetInitializer .