SoapExtension.GetInitializer 方法

定义

当在派生类中重写时,允许 SOAP 扩展以一次执行的成本初始化特定于 XML Web services 方法的数据。

重载

GetInitializer(Type)

当在派生类中重写时,允许 SOAP 扩展以一次执行的成本初始化特定于实现 XML Web services 的类的数据。

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

当在派生类中重写时,允许 SOAP 扩展以一次执行的成本使用应用于 XML Web services 方法的特性来初始化特定于 XML Web services 方法的数据。

GetInitializer(Type)

当在派生类中重写时,允许 SOAP 扩展以一次执行的成本初始化特定于实现 XML Web services 的类的数据。

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

实现应用 SOAP 扩展的 XML Web services 的类的类型。

返回

Object,SOAP 扩展将对其进行初始化以用于缓存。

示例

以下代码演示了如何基于每个 XML Web 服务保存 SOAP 扩展特定数据。 如果使用配置文件而不是属性配置 SOAP 扩展,则 SOAP 扩展可以存储应用 SOAP 扩展的每个类的数据。 此示例保存文件的名称,其中记录发送到 XML Web service 方法的 SOAP 消息和从 XML Web 服务方法发送的 SOAP 消息,具体取决于实现 XML Web 服务的类的名称到缓存中。 此代码示例是 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

注解

ASP.NET 调用的 的 GetInitializer 重载取决于 SOAP 扩展的指定方式。 可通过两种方法指定 SOAP 扩展:

  • 将派生自 SoapExtensionAttribute的自定义属性应用于单个 XML Web 服务方法。

  • 在 web.config 或 app.config 配置文件中添加引用。

如果添加对其中一个配置文件的引用,SOAP 扩展将针对该配置文件范围内的所有 XML Web 服务运行。 通过引用配置文件指定 SOAP 扩展时,ASP.NET 调用 GetInitializer 传入 的 Type重载。 通过应用自定义特性指定扩展时,ASP.NET 调用GetInitializer传入 和 SoapExtensionAttributeLogicalMethodInfo

有关将 SOAP 扩展添加到配置文件的详细信息,请参阅 使用 ASP.NET 创建的 XML Web Services 的配置选项

适用于

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

当在派生类中重写时,允许 SOAP 扩展以一次执行的成本使用应用于 XML Web services 方法的特性来初始化特定于 XML Web services 方法的数据。

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,它表示应用 SOAP 扩展的 XML Web services 方法的特定函数原型。

attribute
SoapExtensionAttribute

应用于 XML Web services 方法的 SoapExtensionAttribute

返回

Object,SOAP 扩展将对其进行初始化以用于缓存。

示例

以下代码演示如何使用派生自 SoapExtensionAttribute的类获取传入的特定于 SOAP 扩展的数据,然后将该数据缓存在 中 GetInitializer。 此代码示例是 SOAP 扩展的完整代码示例的一 TraceExtension 部分,可在类概述中找到 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但是,在首次向 XML Web Services 方法发出 SOAP 请求时,只需调用一次。 如果将自定义属性应用于 XML Web 服务方法,则 GetInitializer 调用 方法。 这允许 SOAP 扩展询问 LogicalMethodInfo XML Web 服务方法的 以获取原型信息,或访问派生自 SoapExtensionAttribute的类传递的特定于扩展的数据。 返回值由 ASP.NET 缓存并传递到后续 Initialize 方法中。 因此,在 中 GetInitializer 完成的初始化实质上封装到一次性性能命中。

  • Initialize - Initialize 每次对 XML Web 服务方法发出 SOAP 请求时都会调用 ,但与类构造函数(在 ObjectGetInitializer 初始化的 传递给它)具有优势。

另请参阅

适用于