共用方式為


SoapExtension.GetInitializer 方法

定義

當在衍生類別中覆寫時,允許 SOAP 擴充耗用一次效能來初始化 XML Web Service 方法所特有的資料。

多載

GetInitializer(Type)

當在衍生類別中覆寫時,允許 SOAP 擴充耗用一次效能來初始化實作 XML Web Service 之類別所特有的資料。

GetInitializer(LogicalMethodInfo, SoapExtensionAttribute)

當在衍生類別中覆寫時,允許 SOAP 擴充耗用一次效能,使用套用至 XML Web Service 方法的屬性來初始化 XML Web Service 方法所特有的資料。

GetInitializer(Type)

當在衍生類別中覆寫時,允許 SOAP 擴充耗用一次效能來初始化實作 XML Web Service 之類別所特有的資料。

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 Service。

傳回

SOAP 擴充為快取所初始化的 Object

範例

下列程式代碼示範如何根據每個 XML Web 服務儲存 SOAP 延伸模組特定數據。 如果使用組態檔而非屬性來設定SOAP延伸模組,SOAP延伸模組可以儲存套用SOAP擴充功能之每個類別的數據。 本範例會根據實作 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 Service 方法的屬性來初始化 XML Web Service 方法所特有的資料。

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 Service 方法的特定函式原型。

attribute
SoapExtensionAttribute

SoapExtensionAttribute,被套用於 XML Web Service 方法。

傳回

SOAP 擴充為快取所初始化的 Object

範例

下列程式代碼示範如何使用衍生自 SoapExtensionAttribute的類別取得傳入的SOAP擴充功能特定數據,然後在中 GetInitializer快取該數據。 此程式代碼範例是可在類別概觀中找到之SOAP延伸模組的完整程式碼範例的SoapExtensionTraceExtension部分。 此程式代碼範例依賴 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 要求時,都會呼叫 ,但在 類別建構函式上具有優點,其中 Object 初始化的 GetInitializer 會傳遞給它。

另請參閱

適用於