指定不論仿真的執行方式為何,Windows 身分識別一律會流經異步點。
<組態>
<運行時間>
<AlwaysFlowImpersonationPolicy>
語法
<alwaysFlowImpersonationPolicy
enabled="true|false"/>
屬性和元素
下列各節說明屬性、子元素和父元素。
屬性
屬性 | 描述 |
---|---|
enabled |
必要屬性。 指出 Windows 身分識別是否跨異步點流動。 |
enabled Attribute
價值 | 描述 |
---|---|
false |
除非仿真是透過像是 Impersonate等 Managed 方法執行,否則 Windows 身分識別不會流經異步點。 這是預設值。 |
true |
不論仿真的執行方式為何,Windows 身分識別一律會流經異步點。 |
子專案
沒有。
父元素
元素 | 描述 |
---|---|
configuration |
Common Language Runtime 和 .NET Framework 應用程式所使用之每個組態檔中的根元素。 |
runtime |
包含元件系結和垃圾收集的相關信息。 |
言論
在 .NET Framework 1.0 和 1.1 版中,Windows 身分識別不會流向異步點。 在 .NET Framework 2.0 版中,有一個 ExecutionContext 物件,其中包含目前執行中線程的相關信息,並將它流向應用程式域中的異步點。 WindowsIdentity 也會在流經異步點的資訊中流動,前提是仿真是使用 managed 方法達成,例如 Impersonate,而不是透過平臺叫用至原生方法等其他方式達成。 這個元素用來指定 Windows 身分識別會流經異步點,而不論仿真的達成方式為何。
您可以透過其他兩種方式來改變此預設行為:
以每個線程為基礎的Managed程式碼中。
您可以使用 ExecutionContext.SuppressFlow、SecurityContext.SuppressFlowWindowsIdentity或 SecurityContext.SuppressFlow 方法來修改 ExecutionContext 和 SecurityContext 設定,以根據每個線程隱藏流程。
在呼叫 Unmanaged 裝載介面以載入 Common Language Runtime (CLR) 時。
如果使用非受控裝載介面(而不是簡單的 Managed 可執行檔)載入 CLR,您可以在呼叫 CorBindToRuntimeEx 函式 函式中指定特殊旗標。 若要開啟整個程式的相容性模式,請將 CorBindToRuntimeEx 函式的
flags
參數設定為STARTUP_ALWAYSFLOW_IMPERSONATION
。
組態檔
在 .NET Framework 應用程式中,此元素只能在應用程式組態檔中使用。
針對 ASP.NET 應用程式,您可以在 <windows 資料夾>\Microsoft.NET\Framework\vx.x.xxxx 目錄中找到的 aspnet.config 檔案中設定模擬流程。
根據預設,ASP.NET 會使用下列組態設定,停用 aspnet.config 檔案中的模擬流程:
<configuration>
<runtime>
<legacyImpersonationPolicy enabled="true"/>
<alwaysFlowImpersonationPolicy enabled="false"/>
</runtime>
</configuration>
在 ASP.NET 中,如果您想要改為允許模擬流程,您必須明確使用下列組態設定:
<configuration>
<runtime>
<legacyImpersonationPolicy enabled="false"/>
<alwaysFlowImpersonationPolicy enabled="true"/>
</runtime>
</configuration>
例
下列範例示範如何指定 Windows 身分識別會流經異步點,即使仿真是透過 Managed 方法以外的方法達成也一樣。
<configuration>
<runtime>
<alwaysFlowImpersonationPolicy enabled="true"/>
</runtime>
</configuration>