SoapExtension.GetInitializer 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
當在衍生類別中覆寫時,允許 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延伸模組的完整程式碼範例的SoapExtension一TraceExtension
部分。 此程式代碼範例依賴 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 會傳遞給它。