NetCodeGroup 类

定义

向从其下载程序集的站点授予 Web 权限。 此类不能被继承。

public ref class NetCodeGroup sealed : System::Security::Policy::CodeGroup
public sealed class NetCodeGroup : System.Security.Policy.CodeGroup
[System.Serializable]
public sealed class NetCodeGroup : System.Security.Policy.CodeGroup
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class NetCodeGroup : System.Security.Policy.CodeGroup
type NetCodeGroup = class
    inherit CodeGroup
[<System.Serializable>]
type NetCodeGroup = class
    inherit CodeGroup
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type NetCodeGroup = class
    inherit CodeGroup
Public NotInheritable Class NetCodeGroup
Inherits CodeGroup
继承
NetCodeGroup
属性

示例

下面的代码示例演示如何创建 NetCodeGroup ,并为使用 HTTP 方案下载的代码添加 CodeConnectAccess 对象。


static void SetNetCodeGroupAccess()
{
    String^ userPolicyLevel = "User";
    // Locate the User policy level.
    PolicyLevel^ level = nullptr;
    System::Collections::IEnumerator^ ph = 
        System::Security::SecurityManager::PolicyHierarchy();
    while(ph->MoveNext())
    {
        level = (PolicyLevel^)ph->Current;
        if (level->Label == userPolicyLevel)
        {
            break;       
        }
    }
    if (level->Label != userPolicyLevel)
        throw gcnew ApplicationException("Could not find User policy level.");

    IMembershipCondition^ membership =
        gcnew UrlMembershipCondition("http://www.contoso.com/*");
    NetCodeGroup^ codeGroup = gcnew NetCodeGroup(membership);
    // Delete default settings.
    codeGroup->ResetConnectAccess();
    // Create an object that represents access to the FTP scheme and 
    // default port.
    CodeConnectAccess^ CodeAccessFtp = 
        gcnew CodeConnectAccess(Uri::UriSchemeFtp, 
        CodeConnectAccess::DefaultPort);
    // Create an object that represents access to the HTTPS scheme 
    // and default port.
    CodeConnectAccess^ CodeAccessHttps = 
        gcnew CodeConnectAccess(Uri::UriSchemeHttps, 
        CodeConnectAccess::DefaultPort);
    // Create an object that represents access to the origin 
    // scheme and port.
    CodeConnectAccess^ CodeAccessOrigin = 
        CodeConnectAccess::CreateOriginSchemeAccess
        (CodeConnectAccess::OriginPort);
    // Add connection access objects to the NetCodeGroup object.
    codeGroup->AddConnectAccess(Uri::UriSchemeHttp, CodeAccessFtp);
    codeGroup->AddConnectAccess(Uri::UriSchemeHttp, CodeAccessHttps);
    codeGroup->AddConnectAccess(Uri::UriSchemeHttp, CodeAccessOrigin);
    // Provide name and description information for caspol.exe tool.
    codeGroup->Name = "ContosoHttpCodeGroup";
    codeGroup->Description = "Code originating from contoso.com can" +
        " connect back using the FTP or HTTPS.";
    // Add the code group to the User policy's root node.
    level->RootCodeGroup->AddChild(codeGroup);
    // Save the changes to the policy level.
    System::Security::SecurityManager::SavePolicy();
}
public static void SetNetCodeGroupAccess()
{
    const string userPolicyLevel = "User";
    // Locate the User policy level.
    PolicyLevel level = null;
    System.Collections.IEnumerator ph =
        System.Security.SecurityManager.PolicyHierarchy();
    while(ph.MoveNext())
    {
        level = (PolicyLevel)ph.Current;
        if( level.Label == userPolicyLevel )
        {
            break;
        }
    }
    if (level.Label != userPolicyLevel)
        throw new ApplicationException("Could not find User policy level.");

    IMembershipCondition membership =
        new UrlMembershipCondition(@"http://www.contoso.com/*");
    NetCodeGroup codeGroup = new NetCodeGroup(membership);
    // Delete default settings.
    codeGroup.ResetConnectAccess();
    // Create an object that represents access to the FTP scheme and default port.
    CodeConnectAccess a1 = new CodeConnectAccess(Uri.UriSchemeFtp, CodeConnectAccess.DefaultPort);
    // Create an object that represents access to the HTTPS scheme and default port.
    CodeConnectAccess a2 = new CodeConnectAccess(Uri.UriSchemeHttps, CodeConnectAccess.DefaultPort);
    // Create an object that represents access to the origin scheme and port.
    CodeConnectAccess a3 = CodeConnectAccess.CreateOriginSchemeAccess(CodeConnectAccess.OriginPort);
    // Add connection access objects to the NetCodeGroup object.
    codeGroup.AddConnectAccess(Uri.UriSchemeHttp, a1);
    codeGroup.AddConnectAccess(Uri.UriSchemeHttp, a2);
    codeGroup.AddConnectAccess(Uri.UriSchemeHttp, a3);
    // Provide name and description information for caspol.exe tool.
    codeGroup.Name = "ContosoHttpCodeGroup";
    codeGroup.Description = "Code originating from contoso.com can connect back using the FTP or HTTPS.";
    // Add the code group to the User policy's root node.
    level.RootCodeGroup.AddChild(codeGroup);
    // Save the changes to the policy level.
    System.Security.SecurityManager.SavePolicy();
}

注解

代码组是代码访问安全策略的构建基块。 每个策略级别都包含一个根代码组,该代码组可以具有一个或多个子代码组。 每个子代码组可以有自己的子代码组;此行为扩展到任意数量的级别,形成一个树。 每个代码组都有一个成员身份条件,该条件根据该程序集的证据确定给定程序集是否属于该组。 只有成员身份条件与给定程序集匹配的代码组及其子代码组才应用代码访问安全策略。

NetCodeGroup具有与 的相同的合并语义UnionCodeGroup;它形成所有匹配子代码组的对象和PolicyStatement它从输入Url证据生成的 对象的联合PolicyStatement。 但是, NetCodeGroup 返回包含动态计算 WebPermission 的权限,该权限授予对运行代码的站点的连接访问权限; UnionCodeGroup 仅返回静态权限集。

NetCodeGroup创建 时,它包含下表中显示的默认连接访问规则。

URI 方案 规则
文件 不允许对源服务器的连接访问。
http 允许使用源端口进行 HTTP 和 HTTPS 访问。
https 允许使用源端口进行 HTTPS 访问。

通过将具有相应SchemePort和属性值AddConnectAccess的 对象传递给 CodeConnectAccess 方法,可以控制代码在连接回其源站点时允许使用的方案和端口。 可以通过将 (“”) 指定 AbsentOriginScheme 为方案,创建在证据中不存在源方案或无法识别时应用的连接访问规则。 还可以通过将 (“*”) 指定 AnyOtherOriginScheme 为方案,创建在没有具有匹配方案的连接访问规则时应用的连接访问规则。

备注

如果代码未将 URI 方案作为证据提交,则允许使用任何方案返回到源站点进行访问。

构造函数

NetCodeGroup(IMembershipCondition)

初始化 NetCodeGroup 类的新实例。

字段

AbsentOriginScheme

包含一个值,该值用于为具有未知或未能识别的原始方案的代码指定连接访问权限。

AnyOtherOriginScheme

包含一个值,用于指定任何其他未指定的原始方案。

属性

AttributeString

获取代码组策略声明的特性的字符串表示形式。

Children

获取或设置代码组的子代码组的排序列表。

(继承自 CodeGroup)
Description

获取或设置代码组的说明。

(继承自 CodeGroup)
MembershipCondition

获取或设置代码组的成员条件。

(继承自 CodeGroup)
MergeLogic

获取用于合并组的逻辑。

Name

获取或设置代码组的名称。

(继承自 CodeGroup)
PermissionSetName

获取该代码组的 NamedPermissionSet 的名称。

PolicyStatement

获取或设置与该代码组关联的策略声明。

(继承自 CodeGroup)

方法

AddChild(CodeGroup)

将子代码组添加到当前代码组。

(继承自 CodeGroup)
AddConnectAccess(String, CodeConnectAccess)

将指定的连接访问权限添加到当前代码组。

Copy()

生成当前代码组的深层副本。

CreateXml(SecurityElement, PolicyLevel)

当在派生类中被重写时,序列化导出的代码组所特有的属性和内部状态,并将序列化添加到指定的 SecurityElement

(继承自 CodeGroup)
Equals(CodeGroup, Boolean)

确定指定的代码组是否等效于当前代码组,如果指定,还检查子代码组。

(继承自 CodeGroup)
Equals(Object)

确定指定的代码组是否等效于当前代码组。

Equals(Object)

确定指定的代码组是否等效于当前代码组。

(继承自 CodeGroup)
FromXml(SecurityElement)

从 XML 编码重新构造具有给定状态的安全对象。

(继承自 CodeGroup)
FromXml(SecurityElement, PolicyLevel)

从 XML 编码重新构造具有给定的状态和策略级别的安全对象。

(继承自 CodeGroup)
GetConnectAccessRules()

获取当前代码组的连接访问权限信息。

GetHashCode()

获取当前代码组的哈希代码。

GetHashCode()

获取当前代码组的哈希代码。

(继承自 CodeGroup)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ParseXml(SecurityElement, PolicyLevel)

当在派生类中被重写时,从指定的 SecurityElement 重新构造导出的代码组所特有的属性和内部状态。

(继承自 CodeGroup)
RemoveChild(CodeGroup)

移除指定的子代码组。

(继承自 CodeGroup)
ResetConnectAccess()

移除当前代码组的所有连接访问权限信息。

Resolve(Evidence)

对一组证据解析代码组及其子代的策略。

ResolveMatchingCodeGroups(Evidence)

解析匹配的代码组。

ToString()

返回表示当前对象的字符串。

(继承自 Object)
ToXml()

创建安全对象及其当前状态的 XML 编码。

(继承自 CodeGroup)
ToXml(PolicyLevel)

创建安全对象、其当前状态以及代码所在策略级别的 XML 编码。

(继承自 CodeGroup)

适用于