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 нее передается.