SoapExtension.GetInitializer Método

Definição

Quando substituído em uma 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 a ser pago uma única vez.

Sobrecargas

GetInitializer(Type)

Quando substituído em uma 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 a ser pago uma única vez.

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

Quando substituído em uma classe derivada, permite que uma extensão SOAP inicialize dados específicos de 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 a ser pago uma única vez.

GetInitializer(Type)

Quando substituído em uma 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 a ser pago uma única vez.

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.

Retornos

Object

O Object que inicializa a extensão SOAP para inicializa para o cache.

Exemplos

O código a seguir demonstra como é possível salvar dados específicos da extensão SOAP por serviço Web XML. Se a extensão SOAP estiver configurada usando um arquivo de configuração em vez de um atributo, a extensão SOAP poderá armazenar dados para cada classe à qual a extensão SOAP é aplicada. Este exemplo salva o nome de um arquivo no qual registrar as mensagens SOAP enviadas de e para o método de serviço Web XML com base no nome da classe que implementa o serviço Web XML no cache. Este exemplo de código faz parte de um exemplo de código completo para uma extensão SOAP TraceExtension que pode ser encontrada na visão geral da SoapExtension 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

Comentários

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

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

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

Se você adicionar uma referência a um dos arquivos de configuração, a extensão SOAP será executada para todos os serviços Web XML dentro do escopo desse arquivo de configuração. Ao especificar, uma extensão SOAP fazendo referência a um arquivo de configuração, ASP.NET invoca a GetInitializer sobrecarga que passa em um Type. Ao especificar uma extensão aplicando um atributo personalizado, ASP.NET invoca o GetInitializer que passa em um LogicalMethodInfo e um SoapExtensionAttribute.

Para obter detalhes sobre como adicionar extensões SOAP a um arquivo de configuração, consulte As Opções de Configuração para Serviços Web XML criados usando ASP.NET.

Aplica-se a

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

Quando substituído em uma classe derivada, permite que uma extensão SOAP inicialize dados específicos de 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 a ser pago uma única vez.

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

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

attribute
SoapExtensionAttribute

O SoapExtensionAttribute aplicado ao método de serviço Web XML.

Retornos

Object

O Object que inicializa a extensão SOAP para inicializa para o cache.

Exemplos

O código a seguir demonstra como você pode obter dados específicos da extensão SOAP passados SoapExtensionAttributeusando uma classe da qual deriva e, em seguida, armazenar esses dados em cache.GetInitializer Este exemplo de código faz parte de um exemplo de código completo para uma TraceExtension extensão SOAP que pode ser encontrada na visão geral da SoapExtension classe. Este exemplo de código depende de um TraceExtensionAttribute ser passado para o attribute parâmetro. No exemplo de SoapExtensionAttribute código completo, TraceExtensionAttribute deriva e adiciona uma Filename propriedade, que é o que GetInitializer armazena no 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

Comentários

Se a extensão SOAP estiver configurada usando um arquivo de configuração, consulte a GetInitializer sobrecarga que aceita um Type.

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

  • Construtor de classe – O construtor de classe é chamado sempre que uma extensão SOAP é instanciada e normalmente é usada para inicializar variáveis de membro.

  • GetInitializer - GetInitializer, no entanto, é chamado apenas uma vez, a primeira vez que uma solicitação SOAP é feita em um método de serviços Web XML. Se um atributo personalizado for aplicado ao método de serviço Web XML, o GetInitializer método será invocado. Isso permite que a extensão SOAP interrogue o LogicalMethodInfo método de um serviço Web XML para obter informações de protótipo ou acessar dados específicos de extensão passados por uma classe derivada de SoapExtensionAttribute. O valor retornado é armazenado em cache por ASP.NET e passado para métodos subsequentesInitialize. Portanto, a inicialização feita é GetInitializer encapsulada essencialmente em um hit de desempenho único.

  • Initialize - Initialize é chamado sempre que uma solicitação SOAP é feita em um método de serviço Web XML, mas tem uma vantagem sobre o construtor de classe, pois o Object inicializado GetInitializer é passado para ele.

Confira também

Aplica-se a