分享方式:


<alwaysFlowImpersonationPolicy> 元素

指定 Windows 識別一律流經非同步點,而不論模擬的執行方式為何。

<configuration>
  <runtime>
    <alwaysFlowImpersonationPolicy>

Syntax

<alwaysFlowImpersonationPolicy
  enabled="true|false"/>  

屬性和項目

下列章節說明屬性、子元素和父元素。

屬性

屬性 描述
enabled 必要屬性。

指出 Windows 身分識別是否可跨非同步點流動。

啟用屬性

描述
false 除非模擬是透過 Impersonate 之類的受控方法執行,否則 Windows 身分識別不會流經非同步點。 此為預設值。
true 不論模擬的執行方式為何,Windows 識別一律會流經非同步點。

子元素

無。

父項目

元素 Description
configuration 通用語言執行平台和 .NET Framework 應用程式所使用之每個組態檔中的根項目。
runtime 包含有關組件繫結和記憶體回收的資訊。

備註

在 .NET Framework 1.0 和 1.1 版中,Windows 身分識別不會跨非同步點流動。 在 .NET Framework 2.0 版中,有一個 ExecutionContext 物件包含目前執行執行緒的相關資訊,並將它流向應用程式域內的非同步點。 WindowsIdentity 也會在跨非同步點的資訊中流動,前提是模擬是使用 Impersonate 這類受控方法進行,而不是透過平台叫用原生方法等其他方式。 這個元素用來指定不論模擬的執行方式為何,Windows 身分識別都會流經非同步點。

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

  1. 使用每個執行緒的受控程式碼。

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

  2. 使用非受控裝載介面呼叫載入通用語言執行平台 (CLR)。

    如果使用非受控裝載介面 (而非簡單的受控可執行檔) 來載入 CLR,您可以在 CorBindToRuntimeEx Function 函式呼叫指定特殊旗標。 若要為整個流程啟用相容性模式,請將 CorBindToRuntimeEx Functionflags 參數設定為 STARTUP_ALWAYSFLOW_IMPERSONATION

組態檔

在.NET Framework應用程式中,此元素只能在應用程式組態檔中使用。

針對 ASP.NET 應用程式,可以在 Windows Folder > \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 身分識別還是會流經非同步點。

<configuration>  
  <runtime>  
    <alwaysFlowImpersonationPolicy enabled="true"/>  
  </runtime>  
</configuration>  

另請參閱