SoapExtension.GetInitializer Methode

Definition

Wenn sie in einer abgeleiteten Klasse überschrieben werden, kann eine SOAP-Erweiterung Daten, die für eine XML-Webdienstmethode spezifisch sind, zu einem einmaligen Leistungsaufwand initialisieren.

Überlädt

Name Beschreibung
GetInitializer(Type)

Wenn sie in einer abgeleiteten Klasse überschrieben werden, kann eine SOAP-Erweiterung Daten initialisieren, die für eine Klasse spezifisch sind, um einen XML-Webdienst gleichzeitig zu leistungseinbußen zu implementieren.

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

Wenn sie in einer abgeleiteten Klasse überschrieben werden, kann eine SOAP-Erweiterung Daten, die für eine XML-Webdienstmethode spezifisch sind, mithilfe eines Attributs initialisieren, das auf die XML-Webdienstmethode angewendet wird, zu einem einmaligen Leistungsaufwand.

GetInitializer(Type)

Wenn sie in einer abgeleiteten Klasse überschrieben werden, kann eine SOAP-Erweiterung Daten initialisieren, die für eine Klasse spezifisch sind, um einen XML-Webdienst gleichzeitig zu leistungseinbußen zu implementieren.

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

Die Object SOAP-Erweiterung initialisiert für die Zwischenspeicherung.

Beispiele

Der folgende Code veranschaulicht, wie sie SOAP-Erweiterungsspezifische Daten pro XML-Webdienst speichern 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 SOAP-Nachrichten protokolliert werden, die an und von der XML-Webdienstmethode basierend auf dem Namen der Klasse protokolliert werden, die den XML-Webdienst in den 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 an, das von SoapExtensionAttributeder Einzelnen XML-Webdienstmethode abgeleitet wird.

  • Fügen Sie einen Verweis in den Konfigurationsdateien web.config oder app.config 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. Bei angabe einer SOAP-Erweiterung durch Verweisen auf eine Konfigurationsdatei ruft ASP.NET die überladene GetInitializerüberladung auf, die eine Type übergibt. Wenn Sie eine Erweiterung durch Anwenden eines benutzerdefinierten Attributs angeben, ruft ASP.NET den GetInitializer auf, der eine LogicalMethodInfo und ein SoapExtensionAttribute übergibt.

Ausführliche Informationen zum Hinzufügen von SOAP-Erweiterungen zu einer Konfigurationsdatei finden Sie unter Configuration Options for XML Web Services Created Using ASP.NET.

Gilt für:

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

Wenn sie in einer abgeleiteten Klasse überschrieben werden, kann eine SOAP-Erweiterung Daten, die für eine XML-Webdienstmethode spezifisch sind, mithilfe eines Attributs initialisieren, das auf die XML-Webdienstmethode angewendet wird, zu einem einmaligen Leistungsaufwand.

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 Darstellung des spezifischen Funktionsprototyps für die XML-Webdienstmethode, auf die die SOAP-Erweiterung angewendet wird.

attribute
SoapExtensionAttribute

Die SoapExtensionAttribute auf die XML-Webdienstmethode angewendete Methode.

Gibt zurück

Die Object SOAP-Erweiterung initialisiert für die Zwischenspeicherung.

Beispiele

Der folgende Code veranschaulicht, wie Sie SOAP-erweiterungsspezifische Daten abrufen können, die mithilfe einer Klasse übergeben werden, die von SoapExtensionAttribute, und dann diese Daten GetInitializerzwischenspeichert. Dieses Codebeispiel ist Teil eines vollständigen Codebeispiels für eine TraceExtension SOAP-Erweiterung, die in der SoapExtension Klassenübersicht zu finden ist. Dieses Codebeispiel basiert auf einer TraceExtensionAttribute Übergabe an den attribute Parameter. Im vollständigen Codebeispiel TraceExtensionAttribute wird eine SoapExtensionAttribute Eigenschaft abgeleitet Filename und hinzugefügt, die im Cache gespeichert wirdGetInitializer.

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, lesen Sie die Überladung, die GetInitializer eine Type.

Eine SOAP-Erweiterung bietet drei Möglichkeiten zum Initialisieren von Daten und alle haben unterschiedliche Zwecke:

  • Klassenkonstruktor – Der Klassenkonstruktor wird jedes Mal aufgerufen, wenn eine SOAP-Erweiterung instanziiert wird und in der Regel verwendet wird, um Membervariablen zu initialisieren.

  • 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. Auf diese Weise kann die SOAP-Erweiterung die LogicalMethodInfo XML-Webdienstmethode nach Prototypinformationen abfragen oder auf erweiterungsspezifische Daten zugreifen, die von einer Klasse übergeben werden SoapExtensionAttribute. Der Rückgabewert wird von ASP.NET zwischengespeichert und an nachfolgende InitializeMethoden übergeben. Daher wird die Initialisierung GetInitializer im Wesentlichen in einen einmaligen Leistungstreffer gekapselt.

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

Weitere Informationen

Gilt für: