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 najednou náklady na výkon.

Přetížení

Name Description
GetInitializer(Type)

Při přepsání v odvozené třídě umožňuje rozšíření SOAP inicializovat data specifická pro třídu implementuje webovou službu XML najednou náklady na výkon.

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 najednou náklady na výkon.

GetInitializer(Type)

Při přepsání v odvozené třídě umožňuje rozšíření SOAP inicializovat data specifická pro třídu implementuje webovou službu XML najednou náklady na výkon.

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 se 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, může rozšíření SOAP ukládat data pro každou třídu, na kterou se použije rozšíření SOAP. Tento příklad uloží název souboru, do kterého se mají protokolovat 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 rozšíření TraceExtension SOAP, které lze najít 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é se volá ASP.NET závisí na tom, jak bylo zadáno rozšíření SOAP. Existují dvě metody pro určení rozšíření SOAP:

  • Použití vlastního atributu odvozeného z SoapExtensionAttribute, na jednotlivé metody 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 tohoto konfiguračního souboru. Při zadávání přípony SOAP odkazováním na konfigurační soubor ASP.NET vyvolá přetížení GetInitializer, které předává v Type. Při zadávání rozšíření použitím vlastního atributu ASP.NET vyvolá GetInitializer, který předává LogicalMethodInfo a SoapExtensionAttribute.

Podrobnosti o přidávání rozšíření SOAP do konfiguračního souboru najdete v tématu 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 najednou náklady na výkon.

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

Představuje LogicalMethodInfo prototyp konkrétní funkce pro metodu webové služby XML, na kterou se používá rozšíření SOAP.

attribute
SoapExtensionAttribute

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

Návraty

Inicializuje Object se 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ředávaná pomocí třídy, která je odvozena od SoapExtensionAttribute, a pak ukládat tato data do mezipaměti .GetInitializer Tento příklad kódu je součástí úplného příkladu kódu pro TraceExtension rozšíření SOAP, které lze najít 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 TraceExtensionAttribute kódu je odvozen z SoapExtensionAttribute a přidává Filename vlastnost, což je to, co GetInitializer ukládá do 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 nakonfigurováno pomocí konfiguračního souboru, zobrazí 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ém vytvoření instance rozšíření SOAP a obvykle se používá k inicializaci proměnných členů.

  • GetInitializer - GetInitializer, nicméně, je volána jen jednou, při prvním požadavku SOAP do metody XML Webové služby. Pokud se pro metodu webové služby XML použije vlastní atribut, GetInitializer vyvolá se metoda. To umožňuje rozšíření SOAP interrogate LogicalMethodInfo of an XML Web service method for prototype information or to access extension-specific data předané třídou odvozené z SoapExtensionAttribute. Návratová hodnota je uložena do mezipaměti ASP.NET a předána do následných metod Initialize. Inicializace provedená v GetInitializer důsledku toho je zapouzdřena v podstatě do jednorázového dosažení výkonu.

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

Viz také

Platí pro