SoapExtension.GetInitializer Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.