SoapExtension.GetInitializer Método

Definição

Quando sobreposto numa classe derivada, permite que uma extensão SOAP inicialize dados específicos de um método de serviço Web XML a um custo de desempenho único.

Sobrecargas

Name Description
GetInitializer(Type)

Quando sobreposta numa classe derivada, permite que uma extensão SOAP inicialize dados específicos de uma classe que implementa um serviço Web XML a um custo de desempenho único.

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

Quando sobrescrito numa classe derivada, permite que uma extensão SOAP inicialize dados específicos para um método de serviço Web XML usando um atributo aplicado ao método de serviço Web XML a um custo de desempenho único.

GetInitializer(Type)

Quando sobreposta numa classe derivada, permite que uma extensão SOAP inicialize dados específicos de uma classe que implementa um serviço Web XML a um custo de desempenho único.

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

Parâmetros

serviceType
Type

O tipo da classe que implementa o serviço Web XML ao qual a extensão SOAP é aplicada.

Devoluções

Depois Object , a extensão SOAP inicializa-se para armazenamento em cache.

Exemplos

O código seguinte demonstra como se pode guardar dados específicos da extensão SOAP numa base de serviço Web XML. Se a extensão SOAP for configurada usando um ficheiro de configuração em vez de um atributo, a extensão SOAP pode armazenar dados para cada classe à qual a extensão SOAP é aplicada. Este exemplo guarda o nome de um ficheiro no qual registar as mensagens SOAP enviadas para e a partir do método do serviço Web XML com base no nome da classe que implementa o serviço Web XML na cache. Este exemplo de código faz parte de um exemplo completo de código para uma extensão SOAP TraceExtension que pode ser encontrado na SoapExtension visão geral da classe.

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

Observações

A sobrecarga de GetInitializer que é chamada por ASP.NET depende de como a extensão SOAP foi especificada. Existem dois métodos para especificar uma extensão SOAP:

  • Aplicar um atributo personalizado, derivado de SoapExtensionAttribute, ao método individual do serviço Web XML.

  • Adicione uma referência nos ficheiros de configuração web.config ou app.config.

Se adicionares uma referência a um dos ficheiros de configuração, a extensão SOAP corre para todos os serviços Web XML dentro do âmbito desse ficheiro de configuração. Ao especificar, uma extensão SOAP ao referenciar um ficheiro de configuração, ASP.NET invoca a sobrecarga GetInitializer que passa num Type. Ao especificar uma extensão aplicando um atributo personalizado, ASP.NET invoca o GetInitializer que passa num LogicalMethodInfo e num SoapExtensionAttribute.

Para detalhes sobre como adicionar extensões SOAP a um ficheiro de configuração, consulte Opções de Configuração para Serviços Web XML Criados Usando ASP.NET.

Aplica-se a

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

Quando sobrescrito numa classe derivada, permite que uma extensão SOAP inicialize dados específicos para um método de serviço Web XML usando um atributo aplicado ao método de serviço Web XML a um custo de desempenho único.

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

Parâmetros

methodInfo
LogicalMethodInfo

A representa LogicalMethodInfo o protótipo de função específico para o método de serviço Web XML ao qual a extensão SOAP é aplicada.

attribute
SoapExtensionAttribute

Aplicava-se SoapExtensionAttribute ao método do serviço Web XML.

Devoluções

Depois Object , a extensão SOAP inicializa-se para armazenamento em cache.

Exemplos

O código seguinte demonstra como pode obter dados específicos da extensão SOAP passados usando uma classe que deriva de SoapExtensionAttribute, e depois armazenar esses dados em GetInitializer. Este exemplo de código faz parte de um exemplo completo de código para uma TraceExtension extensão SOAP que pode ser encontrado na SoapExtension visão geral da classe. Este exemplo de código baseia-se num TraceExtensionAttribute ser passado para o attribute parâmetro. No exemplo completo do código, TraceExtensionAttribute deriva de SoapExtensionAttribute e adiciona uma Filename propriedade, que é o que GetInitializer é armazenado na cache.

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

Observações

Se a extensão SOAP for configurada usando um ficheiro de configuração, veja a GetInitializer sobrecarga que aceita um Typearquivo .

Uma extensão SOAP tem três oportunidades para inicializar dados e todas têm propósitos diferentes:

  • Construtor de classes - O construtor de classes é chamado sempre que uma extensão SOAP é instanciada e é tipicamente usado para inicializar variáveis membro.

  • GetInitializer - GetInitializer, no entanto, é chamada apenas uma vez, a primeira vez que um pedido SOAP é feito a um método de serviços Web XML. Se um atributo personalizado for aplicado ao método do serviço Web XML, o GetInitializer método é invocado. Isto permite à extensão SOAP interrogar o LogicalMethodInfo de um método de serviço Web XML para obter informação de protótipo ou aceder a dados específicos de extensão passados por uma classe derivada de SoapExtensionAttribute. O valor de retorno é armazenado em cache por ASP.NET e passado para métodos subsequentes Initialize. Assim, a inicialização feita em GetInitializer é encapsulada essencialmente numa perda de desempenho única.

  • Initialize - Initialize é chamada sempre que um pedido SOAP é feito a um método de serviço Web XML, mas tem uma vantagem sobre o construtor de classes, pois o Object in GetInitializer inicializado é-lhe passado.

Ver também

Aplica-se a