共用方式為


<AlwaysFlowImpersonationPolicy> 元素

指定不論仿真的執行方式為何,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 身分識別會流經異步點,而不論仿真的達成方式為何。

您可以透過其他兩種方式來改變此預設行為:

  1. 以每個線程為基礎的Managed程式碼中。

    您可以使用 ExecutionContext.SuppressFlowSecurityContext.SuppressFlowWindowsIdentitySecurityContext.SuppressFlow 方法來修改 ExecutionContextSecurityContext 設定,以根據每個線程隱藏流程。

  2. 在呼叫 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>  

另請參閱