Sdílet prostřednictvím


SoapExtension.GetInitializer Metoda

Definice

Při přepsání v odvozené třídě umožňuje rozšíření SOAP inicializovat data specifická pro metodu webové služby XML s jednorázovou výkonnostní náklady.

Přetížení

GetInitializer(Type)

Při přepsání v odvozené třídě, umožňuje rozšíření SOAP inicializovat data specifická pro třídu implementuje xml webové služby s náklady na výkon jednorázově.

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

Při přepsání v odvozené třídě umožňuje rozšíření SOAP inicializovat data specifická pro metodu webové služby XML pomocí atributu použitého na metodu webové služby XML s jednorázovou výkonnostní náklady.

GetInitializer(Type)

Při přepsání v odvozené třídě, umožňuje rozšíření SOAP inicializovat data specifická pro třídu implementuje xml webové služby s náklady na výkon jednorázově.

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

Parametry

serviceType
Type

Typ třídy implementuje webovou službu XML, na kterou je použito rozšíření SOAP.

Návraty

Inicializuje Object rozšíření SOAP pro ukládání do mezipaměti.

Příklady

Následující kód ukazuje, jak lze uložit data specifické pro rozšíření SOAP na základě webové služby XML. Pokud je rozšíření SOAP nakonfigurováno pomocí konfiguračního souboru místo atributu, rozšíření SOAP může ukládat data pro každou třídu, na kterou je rozšíření SOAP použito. Tento příklad uloží název souboru, do kterého se protokolují zprávy SOAP odeslané do a z metody webové služby XML na základě názvu třídy implementované webové služby XML do mezipaměti. Tento příklad kódu je součástí úplného příkladu kódu pro TraceExtension SOAP rozšíření, které lze nalézt v přehledu SoapExtension třídy.

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

Poznámky

Přetížení GetInitializer , které je volána ASP.NET závisí na tom, jak bylo zadáno rozšíření SOAP. Existují dvě metody určení rozšíření SOAP:

  • Použít vlastní atribut odvozený z SoapExtensionAttributemetody jednotlivé webové služby XML.

  • Přidejte odkaz do konfiguračních souborů web.config nebo app.config.

Pokud přidáte odkaz na jeden z konfiguračních souborů, rozšíření SOAP se spustí pro všechny webové služby XML v rámci oboru tohoto konfiguračního souboru. Při zadání rozšíření SOAP odkazováním na konfigurační soubor ASP.NET vyvolá GetInitializer přetížení, které předává Type. Při zadávání rozšíření použitím vlastního atributu vyvolá ASP.NET , GetInitializer který předá LogicalMethodInfo a SoapExtensionAttribute.

Podrobnosti o přidání rozšíření SOAP do konfiguračního souboru najdete v tématu Možnosti konfigurace pro webové služby XML vytvořené pomocí ASP.NET.

Platí pro

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

Při přepsání v odvozené třídě umožňuje rozšíření SOAP inicializovat data specifická pro metodu webové služby XML pomocí atributu použitého na metodu webové služby XML s jednorázovou výkonnostní náklady.

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

Parametry

methodInfo
LogicalMethodInfo

A LogicalMethodInfo představující konkrétní prototyp funkce pro metodu webové služby XML, na kterou je použito rozšíření SOAP.

attribute
SoapExtensionAttribute

Použitý SoapExtensionAttribute na metodu webové služby XML.

Návraty

Inicializuje Object rozšíření SOAP pro ukládání do mezipaměti.

Příklady

Následující kód ukazuje, jak můžete získat data specifická pro rozšíření SOAP předaná v pomocí třídy, která je odvozena z SoapExtensionAttribute, a pak je uložit do mezipaměti v GetInitializer. Tento příklad kódu je součástí úplného příkladu kódu pro TraceExtension rozšíření SOAP, který najdete v přehledu SoapExtension třídy. Tento příklad kódu spoléhá na TraceExtensionAttribute předání do parametru attribute . V úplném příkladu kódu se TraceExtensionAttribute odvozuje z SoapExtensionAttribute a přidává Filename vlastnost, která je GetInitializer uložena v mezipaměti.

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

Poznámky

Pokud je rozšíření SOAP nakonfigurované pomocí konfiguračního souboru, podívejte se na GetInitializer přetížení, které přijímá Type.

Rozšíření SOAP má tři příležitosti k inicializaci dat a všechny mají různé účely:

  • Konstruktor třídy – Konstruktor třídy se volá při každé instanci rozšíření SOAP a obvykle se používá k inicializaci členských proměnných.

  • GetInitializer - GetInitializerJe však volána pouze jednou, při prvním provedení požadavku SOAP na metodu webových služeb XML. Pokud je na metodu webové služby XML použit vlastní atribut, GetInitializer vyvolá se metoda . To umožňuje rozšíření SOAP vyslechnout LogicalMethodInfo metodu webové služby XML pro informace o prototypu nebo získat přístup k datům specifickým pro rozšíření předávaných třídou odvozenou z SoapExtensionAttribute. Vrácená hodnota se ASP.NET ukládá do mezipaměti a předává se do dalších Initialize metod. Inicializace provedená v nástroji GetInitializer se proto zapouzdří v podstatě do jednorázového výkonu.

  • Initialize - Initialize je volána pokaždé, když je požadavek SOAP na metodu webové služby XML, ale má výhodu oproti konstruktoru třídy v tom, že Object inicializovaný v GetInitializer je předán do metody.

Viz také

Platí pro