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 .