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

Im folgenden Code wird veranschaulicht, wie soap-erweiterungsspezifische Daten pro XML-Webdienst gespeichert werden können. Wenn die SOAP-Erweiterung mithilfe einer Konfigurationsdatei anstelle eines Attributs konfiguriert ist, 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 an und von der XML-Webdienstmethode gesendeten SOAP-Nachrichten basierend auf dem Namen der Klasse protokolliert werden, die den XML-Webdienst implementiert, im Cache. 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 einen Verweis entweder in den web.config- oder app.config-Konfigurationsdateien 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 einen Typeübergibt. Wenn Sie eine Erweiterung durch Anwenden eines benutzerdefinierten Attributs angeben, ruft ASP.NET die auf, die GetInitializer eine und eine SoapExtensionAttributeLogicalMethodInfo ü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 SoapExtensionAttributeabgeleitet wird, und diese Daten dann in GetInitializerzwischenspeichern. Dieses Codebeispiel ist Teil eines vollständigen Codebeispiels für eine TraceExtension SOAP-Erweiterung, das in der SoapExtension Klassenübersicht zu finden ist. Dieses Codebeispiel basiert darauf, dass ein TraceExtensionAttribute an den attribute -Parameter übergeben wird. Im vollständigen Codebeispiel TraceExtensionAttribute leitet von SoapExtensionAttribute ab 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 ein Typeakzeptiert.

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

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

  • GetInitializer - GetInitializerwird jedoch nur einmal aufgerufen, wenn eine SOAP-Anforderung zum ersten Mal 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 LogicalMethodInfo einer XML-Webdienstmethode nach Prototypinformationen abfragen oder auf erweiterungsspezifische Daten zugreifen, die von einer von SoapExtensionAttributeabgeleiteten Klasse übergeben werden. Der Rückgabewert wird von ASP.NET zwischengespeichert und an nachfolgende Initialize Methoden übergeben. Daher wird die in GetInitializer durchgeführte Initialisierung 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 ihn übergeben wird.

Weitere Informationen

Gilt für: