本文整理汇总了C#中System.Security.HostSecurityManager类的典型用法代码示例。如果您正苦于以下问题:C# HostSecurityManager类的具体用法?C# HostSecurityManager怎么用?C# HostSecurityManager使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
HostSecurityManager类属于System.Security命名空间,在下文中一共展示了HostSecurityManager类的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MySecurityManager
// To replace the default security manager with MySecurityManager, add the
// assembly to the GAC and call MySecurityManager in the
// custom implementation of the AppDomainManager.
using System;
using System.Collections;
using System.Net;
using System.Reflection;
using System.Security;
using System.Security.Permissions;
using System.Security.Policy;
using System.Security.Principal;
using System.Threading;
using System.Runtime.InteropServices;
using System.Runtime.Hosting;
[assembly: System.Security.AllowPartiallyTrustedCallersAttribute()]
namespace MyNamespace
{
[Serializable()]
[SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.Infrastructure)]
public class MySecurityManager : HostSecurityManager
{
public MySecurityManager()
{
Console.WriteLine(" Creating MySecurityManager.");
}
private HostSecurityManagerOptions hostFlags = HostSecurityManagerOptions.HostDetermineApplicationTrust |
HostSecurityManagerOptions.HostAssemblyEvidence;
public override HostSecurityManagerOptions Flags
{
get
{
return hostFlags;
}
}
public override Evidence ProvideAssemblyEvidence(Assembly loadedAssembly, Evidence evidence)
{
Console.WriteLine("Provide assembly evidence for: " + (loadedAssembly == null ? "Unknown" : loadedAssembly.ToString()) + ".");
if (evidence == null)
return null;
evidence.AddAssemblyEvidence(new CustomEvidenceType());
return evidence;
}
public override Evidence ProvideAppDomainEvidence(Evidence evidence)
{
Console.WriteLine("Provide evidence for the " + AppDomain.CurrentDomain.FriendlyName + " AppDomain.");
if (evidence == null)
return null;
evidence.AddHostEvidence(new CustomEvidenceType());
return evidence;
}
[SecurityPermissionAttribute(SecurityAction.Demand, Execution = true)]
[SecurityPermissionAttribute(SecurityAction.Assert, Unrestricted = true)]
public override ApplicationTrust DetermineApplicationTrust(Evidence applicationEvidence, Evidence activatorEvidence, TrustManagerContext context)
{
if (applicationEvidence == null)
throw new ArgumentNullException("applicationEvidence");
// Get the activation context from the application evidence.
// This HostSecurityManager does not examine the activator evidence
// nor is it concerned with the TrustManagerContext;
// it simply grants the requested grant in the application manifest.
IEnumerator enumerator = applicationEvidence.GetHostEnumerator();
ActivationArguments activationArgs = null;
while (enumerator.MoveNext())
{
activationArgs = enumerator.Current as ActivationArguments;
if (activationArgs != null)
break;
}
if (activationArgs == null)
return null;
ActivationContext activationContext = activationArgs.ActivationContext;
if (activationContext == null)
return null;
ApplicationTrust trust = new ApplicationTrust(activationContext.Identity);
ApplicationSecurityInfo asi = new ApplicationSecurityInfo(activationContext);
trust.DefaultGrantSet = new PolicyStatement(asi.DefaultRequestSet, PolicyStatementAttribute.Nothing);
trust.IsApplicationTrustedToRun = true;
return trust;
}
}
[Serializable()]
public class CustomEvidenceType : EvidenceBase
{
public CustomEvidenceType() { }
public override string ToString()
{
return "CustomEvidenceType";
}
}
}