Export (0) Print
Expand All

SocketPermission::AddPermission Method

Adds a permission to the set of permissions for a transport address.

Namespace:  System.Net
Assembly:  System (in System.dll)

public:
void AddPermission(
	NetworkAccess access, 
	TransportType transport, 
	String^ hostName, 
	int portNumber
)

Parameters

access
Type: System.Net::NetworkAccess

One of the NetworkAccess values.

transport
Type: System.Net::TransportType

One of the TransportType values.

hostName
Type: System::String

The host name for the transport address.

portNumber
Type: System::Int32

The port number for the transport address.

ExceptionCondition
ArgumentNullException

hostName is nullptr.

The hostName can be a DNS name, an IP address, or a specified IP subnet, such as 192.168.1.*.

The following example uses the AddPermission method to add connection permissions to the specified host.

// <Snippet6>
      SocketPermission^ socketPermission1 = gcnew SocketPermission( PermissionState::Unrestricted );

      // Create a 'SocketPermission' Object* for two ip addresses.
      SocketPermission^ socketPermission2 = gcnew SocketPermission( PermissionState::None );
      SecurityElement^ securityElement1 = socketPermission2->ToXml();
      // 'SocketPermission' Object* for 'Connect' permission
      SecurityElement^ securityElement2 = gcnew SecurityElement( "ConnectAccess" );
      // Format to specify ip address are <ip-address>#<port>#<transport-type> 
      // First 'SocketPermission' ip-address is '192.168.144.238' for 'All' transport types and 
      // for 'All'ports for the ip-address.
      SecurityElement^ securityElement3 = gcnew SecurityElement( "URI","192.168.144.238#-1#3" );
      // Second 'SocketPermission' ip-address is '192.168.144.240' for 'All' transport types and 
      // for 'All' ports for the ip-address.
      SecurityElement^ securityElement4 = gcnew SecurityElement( "URI","192.168.144.240#-1#3" );
      securityElement2->AddChild( securityElement3 );
      securityElement2->AddChild( securityElement4 );
      securityElement1->AddChild( securityElement2 );

      // Obtain a 'SocketPermission' Object* using 'FromXml' method.
      socketPermission2->FromXml( securityElement1 );

      Console::WriteLine( "\nDisplays the result of FromXml method : \n" );
      Console::WriteLine( socketPermission2 );

      // Create another 'SocketPermission' Object* with two ip addresses. 
      // First 'SocketPermission' ip-address is '192.168.144.238' for 'All' transport types and for 'All' ports for the ip-address.
      SocketPermission^ socketPermission3 =
         gcnew SocketPermission( NetworkAccess::Connect,
            TransportType::All,
            "192.168.144.238",
            SocketPermission::AllPorts );

      // Second 'SocketPermission' ip-address is '192.168.144.239' for 'All' transport types and for 'All' ports for the ip-address.
      socketPermission3->AddPermission( NetworkAccess::Connect,
         TransportType::All,
         "192.168.144.239",
         SocketPermission::AllPorts );

      Console::WriteLine( "Displays the result of AddPermission method : \n" );
      Console::WriteLine( socketPermission3 );

      // Find the intersection between two 'SocketPermission' objects.
      socketPermission1 = dynamic_cast<SocketPermission^>(socketPermission2->Intersect( socketPermission3 ));

      Console::WriteLine( "Displays the result of Intersect method :\n " );
      Console::WriteLine( socketPermission1 );

      // Demand that the calling method have the requsite socket permission.
      socketPermission1->Demand();
// </Snippet3>

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
Show:
© 2015 Microsoft