Freigeben über


SoapExtension.GetInitializer Methode

Definition

Ermöglicht beim Überschreiben in einer abgeleiteten Klasse, dass eine SOAP-Erweiterung unter einmaligen Leistungseinbußen Daten einer XML-Webdienstmethode initialisiert.

Überlädt

GetInitializer(Type)

Ermöglicht beim Überschreiben in einer abgeleiteten Klasse, dass eine SOAP-Erweiterung unter einmaligen Leistungseinbußen Daten einer Klasse initialisiert, die einen XML-Webdienst implementiert.

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

Ermöglicht beim Überschreiben in einer abgeleiteten Klasse, dass eine SOAP-Erweiterung unter einmaligen Leistungseinbußen Daten einer XML-Webdienstmethode unter Verwendung eines Attributs initialisiert, das auf die XML-Webdienstmethode angewendet wird.

GetInitializer(Type)

Ermöglicht beim Überschreiben in einer abgeleiteten Klasse, dass eine SOAP-Erweiterung unter einmaligen Leistungseinbußen Daten einer Klasse initialisiert, die einen XML-Webdienst implementiert.

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

Parameter

serviceType
Type

Der Typ der Klasse, die den XML-Webdienst implementiert, auf den die SOAP-Erweiterung angewendet wird.

Gibt zurück

Das Object, das die SOAP-Erweiterung für das Zwischenspeichern initialisiert.

Beispiele

Der folgende Code veranschaulicht, wie soap-erweiterungsspezifische Daten pro XML-Webdienst gespeichert werden können. Wenn die SOAP-Erweiterung mithilfe einer Konfigurationsdatei anstelle eines Attributs konfiguriert wird, kann die SOAP-Erweiterung Daten für jede Klasse speichern, auf die die SOAP-Erweiterung angewendet wird. In diesem Beispiel wird der Name einer Datei gespeichert, in der die SOAP-Nachrichten protokolliert werden, die an und von der XML-Webdienstmethode gesendet werden, basierend auf dem Namen der Klasse, die den XML-Webdienst im Cache implementiert. Dieses Codebeispiel ist Teil eines vollständigen Codebeispiels für eine TraceExtension-SOAP-Erweiterung, die in der SoapExtension Klassenübersicht zu finden ist.

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

Hinweise

Die Überladung von GetInitializer , die von ASP.NET aufgerufen wird, hängt davon ab, wie die SOAP-Erweiterung angegeben wurde. Es gibt zwei Methoden zum Angeben einer SOAP-Erweiterung:

  • Wenden Sie ein benutzerdefiniertes Attribut, das von abgeleitet wird SoapExtensionAttribute, auf die einzelne XML-Webdienstmethode an.

  • Fügen Sie entweder in den web.config- oder app.config Konfigurationsdateien einen Verweis hinzu.

Wenn Sie einen Verweis auf eine der Konfigurationsdateien hinzufügen, wird die SOAP-Erweiterung für alle XML-Webdienste im Bereich dieser Konfigurationsdatei ausgeführt. Wenn Sie eine SOAP-Erweiterung durch Verweisen auf eine Konfigurationsdatei angeben, ruft ASP.NET die Überladung auf, die GetInitializer in einem Typeübergeht. Wenn Sie eine Erweiterung durch Anwenden eines benutzerdefinierten Attributs angeben, ruft ASP.NET das auf, das GetInitializer in einem LogicalMethodInfo und einem SoapExtensionAttributeübergibt.

Ausführliche Informationen zum Hinzufügen von SOAP-Erweiterungen zu einer Konfigurationsdatei finden Sie unter Konfigurationsoptionen für mit ASP.NET erstellte XML-Webdienste.

Gilt für:

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

Ermöglicht beim Überschreiben in einer abgeleiteten Klasse, dass eine SOAP-Erweiterung unter einmaligen Leistungseinbußen Daten einer XML-Webdienstmethode unter Verwendung eines Attributs initialisiert, das auf die XML-Webdienstmethode angewendet wird.

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

Parameter

methodInfo
LogicalMethodInfo

Eine LogicalMethodInfo, die den entsprechenden Funktionsprototyp für die XML-Webdienstmethode darstellt, auf die die SOAP-Erweiterung angewendet wird.

attribute
SoapExtensionAttribute

Das auf die XML-Webdienstmethode angewendete SoapExtensionAttribute.

Gibt zurück

Das Object, das die SOAP-Erweiterung für das Zwischenspeichern initialisiert.

Beispiele

Der folgende Code veranschaulicht, wie Sie soap-erweiterungsspezifische Daten abrufen können, die mit einer Klasse übergeben werden, die von abgeleitet wird SoapExtensionAttribute, und dann diese Daten in GetInitializerzwischenspeichern können. Dieses Codebeispiel ist Teil eines vollständigen Codebeispiels für eine TraceExtension SOAP-Erweiterung, das in der SoapExtension Klassenübersicht zu finden ist. In diesem Codebeispiel wird ein TraceExtensionAttribute An den attribute Parameter übergeben. Im vollständigen Codebeispiel TraceExtensionAttribute leitet von ab SoapExtensionAttribute und fügt eine Filename Eigenschaft hinzu, die im Cache gespeichert wird GetInitializer .

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

Hinweise

Wenn die SOAP-Erweiterung mithilfe einer Konfigurationsdatei konfiguriert ist, sehen Sie sich die GetInitializer Überladung an, die eine Typeakzeptiert.

Eine SOAP-Erweiterung bietet drei Möglichkeiten, Daten zu initialisieren, und sie haben alle unterschiedliche Zwecke:

  • Klassenkonstruktor: Der Klassenkonstruktor wird jedes Mal aufgerufen, wenn eine SOAP-Erweiterung instanziiert wird und normalerweise zum Initialisieren von Membervariablen verwendet wird.

  • GetInitializer - GetInitializer, wird jedoch nur einmal aufgerufen, wenn zum ersten Mal eine SOAP-Anforderung an eine XML-Webdienstmethode gestellt wird. Wenn ein benutzerdefiniertes Attribut auf die XML-Webdienstmethode angewendet wird, wird die GetInitializer -Methode aufgerufen. Dadurch kann die SOAP-Erweiterung die einer XML-Webdienstmethode für Prototypinformationen abfragen oder auf erweiterungsspezifische Daten zugreifen, die LogicalMethodInfo von einer von SoapExtensionAttributeabgeleiteten Klasse übergeben werden. Der Rückgabewert wird von ASP.NET zwischengespeichert und an nachfolgende Initialize Methoden übergeben. Daher wird die Initialisierung in GetInitializer im Wesentlichen in einen einmaligen Leistungstreffer gekapselt.

  • Initialize - Initialize wird jedes Mal aufgerufen, wenn eine SOAP-Anforderung an eine XML-Webdienstmethode gestellt wird, hat jedoch einen Vorteil gegenüber dem Klassenkonstruktor, da das Object initialisierte in GetInitializer an sie übergeben wird.

Weitere Informationen

Gilt für: