Поделиться через


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 в кэше. Этот пример кода является частью полного примера кода для расширения SOAP TraceExtension, который можно найти в обзоре 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 в файл конфигурации см. в разделе Параметры конфигурации для веб-служб XML, созданных с помощью 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 .

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

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