SoapExtension.GetInitializer Метод

Определение

При переопределении в производном классе позволяет расширению SOAP инициализировать данные, относящиеся к методу веб-службы XML, по одной стоимости производительности.

Перегрузки

Имя Описание
GetInitializer(Type)

При переопределении в производном классе позволяет расширению SOAP инициализировать данные, относящиеся к классу, реализующим веб-службу XML за один раз.

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

При переопределении в производном классе позволяет расширению SOAP инициализировать данные, относящиеся к методу веб-службы XML, используя атрибут, применяемый к методу веб-службы XML за один раз.

GetInitializer(Type)

При переопределении в производном классе позволяет расширению SOAP инициализировать данные, относящиеся к классу, реализующим веб-службу XML за один раз.

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

Параметры

serviceType
Type

Тип класса, реализующего веб-службу XML, к которой применяется расширение SOAP.

Возвращаемое значение

Значение Object , которое инициализирует расширение SOAP для кэширования.

Примеры

В следующем коде показано, как можно сохранять определенные данные расширения SOAP на основе веб-службы XML. Если расширение SOAP настроено с помощью файла конфигурации вместо атрибута, расширение SOAP может хранить данные для каждого класса, к которому применяется расширение SOAP. В этом примере сохраняется имя файла, в котором записываются сообщения SOAP, отправленные и из метода веб-службы XML, на основе имени класса, реализующего веб-службу XML в кэш. Этот пример кода является частью полного примера кода для расширения TRACEExtension SOAP, которое можно найти в обзоре SoapExtension класса.

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

Комментарии

Перегрузка GetInitializer, вызываемая ASP.NET, зависит от того, как было указано расширение SOAP. Существует два метода указания расширения SOAP:

  • Примените настраиваемый атрибут, производный от SoapExtensionAttribute, к отдельному методу веб-службы XML.

  • Добавьте ссылку в файлы конфигурации web.config или app.config.

Если добавить ссылку на один из файлов конфигурации, расширение SOAP запускается для всех веб-служб XML в пределах этого файла конфигурации. При указании расширения SOAP, ссылающегося на файл конфигурации, ASP.NET вызывает перегрузку GetInitializer, которая передается в Type. При указании расширения путем применения пользовательского атрибута ASP.NET вызывается GetInitializer, который передается в LogicalMethodInfo и SoapExtensionAttribute.

Дополнительные сведения о добавлении расширений SOAP в файл конфигурации см. в разделе Configuration Options for XML Web Services Created Using ASP.NET.

Применяется к

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

При переопределении в производном классе позволяет расширению SOAP инициализировать данные, относящиеся к методу веб-службы XML, используя атрибут, применяемый к методу веб-службы XML за один раз.

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

Параметры

methodInfo
LogicalMethodInfo

Представляет LogicalMethodInfo прототип конкретной функции для метода веб-службы XML, к которому применяется расширение SOAP.

attribute
SoapExtensionAttribute

Применяется SoapExtensionAttribute к методу веб-службы XML.

Возвращаемое значение

Значение Object , которое инициализирует расширение SOAP для кэширования.

Примеры

В следующем коде показано, как можно получить данные, относящиеся к расширению SOAP, передаваемые с помощью класса, наследуемого от SoapExtensionAttributeкласса, а затем кэшировать эти данные в GetInitializer. Этот пример кода является частью полного примера кода для TraceExtension расширения SOAP, который можно найти в обзоре SoapExtension класса. В этом примере кода используется передаваемый TraceExtensionAttribute параметр attribute . В полном примере TraceExtensionAttribute кода наследуется от SoapExtensionAttribute и добавляется Filename свойство, которое хранится GetInitializer в кэше.

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

Комментарии

Если расширение SOAP настроено с помощью файла конфигурации, просмотрите GetInitializer перегрузку, которая принимает значение Type.

Расширение SOAP имеет три возможности инициализации данных, и все они имеют разные цели:

  • Конструктор классов — конструктор класса вызывается каждый раз при создании экземпляра расширения SOAP и обычно используется для инициализации переменных-членов.

  • GetInitializer - GetInitializerОднако вызывается только один раз, при первом выполнении запроса SOAP к методу веб-служб XML. Если пользовательский атрибут применяется к методу веб-службы XML, GetInitializer вызывается метод. Это позволяет расширению SOAP допросить LogicalMethodInfo метод веб-службы XML для получения сведений о прототипе или получить доступ к данным, определенным для расширения, передаваемым классом, производным от SoapExtensionAttribute. Возвращаемое значение кэшируется ASP.NET и передается в последующие методы Initialize. Таким образом, инициализация выполняется GetInitializer в основном инкапсулирована в одноразовую производительность.

  • Initialize - Initialize вызывается каждый раз, когда запрос SOAP выполняется в метод веб-службы XML, но имеет преимущество по сравнению с конструктором классов, в том случае, когда Object инициализированная в GetInitializer нее передается.

См. также раздел

Применяется к