Partilhar via


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

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 de GetInitializer que é 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 referenciando 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 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

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 usando uma classe derivada de SoapExtensionAttributee, em seguida, armazenar esses dados em cache no 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 que está sendo passado para o attribute parâmetro . No exemplo de código completo, TraceExtensionAttribute deriva de SoapExtensionAttribute 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 finalidades 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 a 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 de um método de serviço Web XML para informações de protótipo ou para acessar dados específicos da extensão passados por uma classe derivada de SoapExtensionAttribute. O valor retornado é armazenado em cache por ASP.NET e passado para métodos subsequentes Initialize . Portanto, a inicialização feita no GetInitializer é encapsulada essencialmente em uma ocorrência de desempenho único.

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

Confira também

Aplica-se a