<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 身分識別都會流經非同步點。
您可以透過其他兩種方式來改變這個預設行為:
使用每個執行緒的受控程式碼。
您可以使用 ExecutionContext.SuppressFlow、SecurityContext.SuppressFlowWindowsIdentity 或 SecurityContext.SuppressFlow 方法來修改 ExecutionContext 和 SecurityContext 設定,以根據每個執行緒隱藏流程。
使用非受控裝載介面呼叫載入通用語言執行平台 (CLR)。
如果使用非受控裝載介面 (而非簡單的受控可執行檔) 來載入 CLR,您可以在 CorBindToRuntimeEx Function 函式呼叫指定特殊旗標。 若要為整個流程啟用相容性模式,請將 CorBindToRuntimeEx Function 的
flags
參數設定為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>