System.AppDomain.SetThreadPrincipal 方法
方法描述
设置在以下情况下要附加到线程的默认主体对象,即当线程在此应用程序域中执行时,如果线程尝试绑定到主体这种情况。
语法定义(C# System.AppDomain.SetThreadPrincipal 方法 的用法)
[SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlPrincipal)] public void SetThreadPrincipal( IPrincipal principal )
参数/返回值
参数值/返回值 | 参数类型/返回类型 | 参数描述/返回描述 |
---|---|---|
principal | System-Security-Principal-IPrincipal | 要附加到线程的主体对象。 |
返回值 | void |
提示和注释
System.AppDomain.SetThreadPrincipal 方法例子
该示例还显示使用 SetPrincipalPolicy 方法更改应用程序域的主体策略时对线程的影响。
using System; using System.Security.Principal; using System.Threading; class ADPrincipal { static void Main(string[] args) { // Create a new thread with a generic principal. Thread t = new Thread(new ThreadStart(PrintPrincipalInformation)); t.Start(); t.Join(); // Set the principal policy to WindowsPrincipal. AppDomain currentDomain = AppDomain.CurrentDomain; currentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); // The new thread will have a Windows principal representing the // current user. t = new Thread(new ThreadStart(PrintPrincipalInformation)); t.Start(); t.Join(); // Create a principal to use for new threads. IIdentity identity = new GenericIdentity("NewUser"); IPrincipal principal = new GenericPrincipal(identity, null); currentDomain.SetThreadPrincipal(principal); // Create a new thread with the principal created above. t = new Thread(new ThreadStart(PrintPrincipalInformation)); t.Start(); t.Join(); // Wait for user input before terminating. Console.ReadLine(); } static void PrintPrincipalInformation() { IPrincipal curPrincipal = Thread.CurrentPrincipal; if(curPrincipal != null) { Console.WriteLine("Type: " + curPrincipal.GetType().Name); Console.WriteLine("Name: " + curPrincipal.Identity.Name); Console.WriteLine("Authenticated: " + curPrincipal.Identity.IsAuthenticated); Console.WriteLine(); } } }
异常
异常 | 异常描述 |
---|---|
ArgumentNullException | principal 为 null。 |
PolicyException | 已经设置了线程用户。 |
AppDomainUnloadedException | 尝试对已卸载的应用程序域进行操作。 |
版本信息
.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1
适用平台
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。