Поделиться через


NetCodeGroup Класс

Определение

Предоставляет доступ к веб-узлу, с которого была загружена сборка. Этот класс не наследуется.

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 и добавление CodeConnectAccess объектов для кода, загруженного с помощью схемы HTTP.


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 объектов всех соответствующих дочерних групп кода и PolicyStatement создает из входного Url свидетельства. Однако возвращает разрешение, NetCodeGroup содержащее динамически вычисляемый WebPermission объект , который предоставляет доступ для подключения к сайту, с которого выполняется код; UnionCodeGroup просто возвращает статический набор разрешений.

NetCodeGroup При создании он содержит правила доступа к подключению по умолчанию, показанные в следующей таблице.

Схема URI Правило
файл Доступ к серверу-источнику не разрешен.
http Доступ по протоколам HTTP и HTTPS разрешен с помощью порта источника.
HTTPS Доступ по протоколу HTTPS разрешен через порт источника.

Вы можете управлять схемой и портом, которые коду разрешено использовать при подключении к исходному сайту, передав CodeConnectAccess в метод объект с соответствующими Scheme значениями AddConnectAccess свойств и Port . Вы можете создать правило доступа к подключению, которое применяется, если схема источника отсутствует в свидетельстве или не распознается, указав 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)

Применяется к