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 服务的类的名称将发送到 XML Web 服务方法或从 XML Web 服务方法发送的 SOAP 消息记录到缓存中。 此代码示例是可在类概述中找到的 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 在 和 中 LogicalMethodInfo 传递的 SoapExtensionAttribute

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

适用于

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 服务方法发出 SOAP 请求时,只调用一次。 如果自定义属性应用于 XML Web 服务方法,则 GetInitializer 调用 方法。 这允许 SOAP 扩展查询 LogicalMethodInfo XML Web 服务方法的 ,以获取原型信息,或访问派生自 SoapExtensionAttribute的类传递的特定于扩展的数据。 返回值由 ASP.NET 缓存,并传递到后续 Initialize 方法中。 因此,在 中 GetInitializer 完成的初始化基本上封装到一次性性能影响中。

  • Initialize - Initialize 每次向 XML Web 服务方法发出 SOAP 请求时调用 ,但与类构造函数相较,在 ObjectGetInitializer 初始化的 将传递给它。

另请参阅

适用于