MessageQueuePermission Класс

Определение

Позволяет контролировать разрешения на доступ к коду для обмена сообщениями.Allows control of code access permissions for messaging.

public ref class MessageQueuePermission sealed : System::Security::CodeAccessPermission, System::Security::Permissions::IUnrestrictedPermission
[System.Serializable]
public sealed class MessageQueuePermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
type MessageQueuePermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
Public NotInheritable Class MessageQueuePermission
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
Наследование
MessageQueuePermission
Атрибуты
Реализации

Примеры

В следующем примере кода создается несколько экземпляров MessageQueuePermission и демонстрируется использование свойства PermissionEntries.The following code example creates several instances of MessageQueuePermission and demonstrates the use of the PermissionEntries property.


using System;
using System.Messaging;

public class MessageQueuePermissionExample
{
    public static void Main()
    {
        // Create a new instance of the class.
        MessageQueuePermissionExample example =
            new MessageQueuePermissionExample();

        // Create a message queue on the local computer.
        CreateQueue(".\\exampleQueue", false);

        // Demonstrate MessageQueuePermission's constructors.
        example.CreatePermission1();
        example.CreatePermission2();
        example.CreatePermission3();
        example.CreatePermission4();
        example.CreatePermission5();

        // Get and set MessageQueuePermission's PermissionEntries property.
        example.GetPermissionEntries();
    }

    // Creates a new queue.
    public static void CreateQueue(string queuePath, bool transactional)
    {
        if(!MessageQueue.Exists(queuePath))
        {
            MessageQueue.Create(queuePath, transactional);
        }
        else
        {
            Console.WriteLine(queuePath + " already exists.");
        }
    }

    // Demonstrates the following MessageQueuePermission constructor:
    // public #ctor ()
    public void CreatePermission1()
    {
        // Create a new instance of MessageQueuePermission.
        MessageQueuePermission permission = new MessageQueuePermission();
    }

    // Demonstrates the following MessageQueuePermission constructor:
    // public #ctor (MessageQueuePermissionAccess permissionAccess,
    //  String path)
    public void CreatePermission2()
    {
        // Create a new instance of MessageQueuePermission.
        MessageQueuePermission permission = new MessageQueuePermission(
            MessageQueuePermissionAccess.Receive,
            ".\\exampleQueue");
    }

    // Demonstrates the following MessageQueuePermission constructor:
    // public #ctor (MessageQueuePermissionAccess permissionAccess,
    //  String machineName, String label, String category)
    public void CreatePermission3()
    {
        // Connect to a queue on the local computer.
        MessageQueue queue = new MessageQueue(".\\exampleQueue");

        // Create a new instance of MessageQueuePermission.
    string queueCategory = queue.Category.ToString();
    string machineName = queue.MachineName;
    string label = queue.Label;
        MessageQueuePermission permission = new MessageQueuePermission(
            MessageQueuePermissionAccess.Receive,
            machineName,
            label,
            queueCategory);
    }

    // Demonstrates the following MessageQueuePermission constructor:
    //public #ctor (MessageQueuePermissionEntry[] permissionAccessEntries)
    public void CreatePermission4()
    {
        // Connect to a queue on the local computer.
        MessageQueue queue = new MessageQueue(".\\exampleQueue");

        // Create an array of type MessageQueuePermissionEntry.
        MessageQueuePermissionEntry[] entries =
            new MessageQueuePermissionEntry[1];

        // Create a new instance of MessageQueuePermissionEntry and place the
        // instance in the array.
    string machineName = queue.MachineName;
    string label = queue.Label;
        entries[0] = new MessageQueuePermissionEntry(
            MessageQueuePermissionAccess.Receive,
            machineName,
            label,
            queue.Category.ToString());

        // Create a new instance of MessageQueuePermission.
        MessageQueuePermission permission = new MessageQueuePermission(
            entries);
    }

    // Demonstrates the following MessageQueuePermission constructor:
    //public #ctor (PermissionState state)
    public void CreatePermission5()
    {
        // Create a new instance of MessageQueuePermission.
        MessageQueuePermission permission = new MessageQueuePermission(
            System.Security.Permissions.PermissionState.Unrestricted);
    }

    public void GetPermissionEntries()
    {
    
        // Connect to a queue on the local computer.
        MessageQueue queue = new MessageQueue(".\\exampleQueue");

        // Create an array of type MessageQueuePermissionEntry.
        MessageQueuePermissionEntry[] entries =
            new MessageQueuePermissionEntry[1];

        // Create a new instance of MessageQueuePermissionEntry and place the
        // instance in the array.
    string machineName = queue.MachineName;
    string label = queue.Label;
        entries[0] = new MessageQueuePermissionEntry(
            MessageQueuePermissionAccess.Receive,
            machineName,
            label,
            queue.Category.ToString());

        // Create a new instance of MessageQueuePermission.
        MessageQueuePermission permission = new MessageQueuePermission(
            entries);

        // Create a new instance of MessageQueuePermissionEntryCollection and
        // use it to retrieve the permission's PermissionEntries property
        // value.
        MessageQueuePermissionEntryCollection collection =
            permission.PermissionEntries;

        // Loop through the collection.
        foreach(MessageQueuePermissionEntry entry in collection)
        {
            // Display the property values of each MessageQueuePermissionEntry.
            Console.WriteLine("PermissionAccess: {0}", entry.PermissionAccess);
            Console.WriteLine("MachineName: {0}", entry.MachineName);
            Console.WriteLine("Label: {0}", entry.Label);
            Console.WriteLine("Category: {0}", entry.Category.ToString());
        }
    }
}

Конструкторы

MessageQueuePermission()

Инициализация нового экземпляра класса MessageQueuePermission.Initializes a new instance of the MessageQueuePermission class.

MessageQueuePermission(MessageQueuePermissionAccess, String)

Инициализирует новый экземпляр класса MessageQueuePermission с указанными уровнями доступа и путем к очереди.Initializes a new instance of the MessageQueuePermission class with the specified access levels and the path of the queue.

MessageQueuePermission(MessageQueuePermissionAccess, String, String, String)

Инициализирует новый экземпляр класса MessageQueuePermission с указанными уровнями доступа, используемым компьютером, описанием очереди и категорией очереди.Initializes a new instance of the MessageQueuePermission class with the specified access levels, computer to use, queue description, and queue category.

MessageQueuePermission(MessageQueuePermissionEntry[])

Инициализирует новый экземпляр класса MessageQueuePermission с указанными записями уровней доступа к разрешениям.Initializes a new instance of the MessageQueuePermission class with the specified permission access level entries.

MessageQueuePermission(PermissionState)

Инициализирует новый экземпляр класса MessageQueuePermission с заданным состоянием разрешения.Initializes a new instance of the MessageQueuePermission class with the specified permission state.

Свойства

PermissionEntries

Получает коллекцию из элементов разрешений для данного запроса разрешений.Gets the collection of permission entries for this permissions request.

Методы

Assert()

Объявляет, что вызывающий код может получить доступ к ресурсу, защищенному требованием разрешения, через код, вызывающий этот метод, даже если вызывающим объектам выше в стеке вызовов не предоставлено разрешение на доступ к ресурсу.Declares that the calling code can access the resource protected by a permission demand through the code that calls this method, even if callers higher in the stack have not been granted permission to access the resource. Assert() может вызвать проблемы системы безопасности.Using Assert() can create security issues.

(Унаследовано от CodeAccessPermission)
Copy()

Создает и возвращает идентичную копию текущего объекта разрешения.Creates and returns an identical copy of the current permission object.

Demand()

Принудительно создает исключение SecurityException во время выполнения, если ни у одного расположенного выше в стеке вызывающего фрагмента кода нет разрешения, указанного в текущем экземпляре.Forces a SecurityException at run time if all callers higher in the call stack have not been granted the permission specified by the current instance.

(Унаследовано от CodeAccessPermission)
Deny()

Запрещает вызывающим объектам выше в стеке вызовов использовать код, который вызывает этот метод для доступа к ресурсу, указанному текущим экземпляром.Prevents callers higher in the call stack from using the code that calls this method to access the resource specified by the current instance.

(Унаследовано от CodeAccessPermission)
Equals(Object)

Определяет, равен ли заданный объект CodeAccessPermission текущему объекту CodeAccessPermission.Determines whether the specified CodeAccessPermission object is equal to the current CodeAccessPermission.

(Унаследовано от CodeAccessPermission)
FromXml(SecurityElement)

Восстанавливает объект безопасности с указанным состоянием из кодировки XML.Reconstructs a security object with a specified state from an XML encoding.

GetHashCode()

Возвращает хэш-код для объекта CodeAccessPermission, который можно использовать в алгоритмах хэширования и структурах данных, например в хэш-таблице.Gets a hash code for the CodeAccessPermission object that is suitable for use in hashing algorithms and data structures such as a hash table.

(Унаследовано от CodeAccessPermission)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
Intersect(IPermission)

Возвращает новый объект разрешений, предоставляющий пересечение текущего и заданного объектов разрешений.Returns a new permission object that represents the intersection of the current permission object and the specified permission object.

IsSubsetOf(IPermission)

Возвращает значение, указывающее, является ли текущий объект разрешений подмножеством заданного объекта разрешений.Returns a value that indicates whether the current permission object is a subset of the specified permission object.

IsUnrestricted()

Возвращает значение, указывающее, может ли разрешение быть представлено как неограниченное без знания его семантики.Returns a value that indicates whether the permission can be represented as unrestricted without any knowledge of the permission semantics.

MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
PermitOnly()

Запрещает вызывающим объектам выше в стеке вызовов использовать код, который вызывает этот метод для доступа ко всем ресурсам, за исключением ресурса, указанного текущим экземпляром.Prevents callers higher in the call stack from using the code that calls this method to access all resources except for the resource specified by the current instance.

(Унаследовано от CodeAccessPermission)
ToString()

Создает и возвращает строковое представление текущего объекта разрешения.Creates and returns a string representation of the current permission object.

(Унаследовано от CodeAccessPermission)
ToXml()

Создает кодировку XML для объекта безопасности и его текущего состояния.Creates an XML encoding of the security object and its current state.

Union(IPermission)

Возвращает новый объект разрешений, представляющий собой объединение текущего и заданного объектов разрешений.Returns a new permission object that is the union of the current and specified permission objects.

Явные реализации интерфейса

IPermission.Demand() (Унаследовано от CodeAccessPermission)
IStackWalk.Assert() (Унаследовано от CodeAccessPermission)
IStackWalk.Demand() (Унаследовано от CodeAccessPermission)
IStackWalk.Deny() (Унаследовано от CodeAccessPermission)
IStackWalk.PermitOnly() (Унаследовано от CodeAccessPermission)

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

Дополнительно