UrlAttribute UrlAttribute UrlAttribute UrlAttribute Class

Definizione

Definisce un attributo utilizzabile presso il sito di chiamata per specificare l'URL in cui si verifica l'attivazione. Defines an attribute that can be used at the call site to specify the URL where the activation will happen. Questa classe non può essere ereditata. This class cannot be inherited.

public ref class UrlAttribute sealed : System::Runtime::Remoting::Contexts::ContextAttribute
[System.Runtime.InteropServices.ComVisible(true)]
[System.Security.SecurityCritical]
[System.Serializable]
public sealed class UrlAttribute : System.Runtime.Remoting.Contexts.ContextAttribute
type UrlAttribute = class
    inherit ContextAttribute
Public NotInheritable Class UrlAttribute
Inherits ContextAttribute
Ereditarietà
Attributi

Esempi

Esempio di codice seguente viene illustrato l'utilizzo del UrlAttribute nella configurazione di .NET remoting attivato dal client.The following code example illustrates the use of the UrlAttribute in setting up client-activated remoting. L'esempio contiene tre parti: un client, un server e un oggetto remoto utilizzato dal client e server.The example contains three parts: a client, a server, and a remote object that is used by the client and server.

Esempio di codice seguente viene illustrato un client:The following code example shows a client:

#using <System.Runtime.Remoting.dll>
#using <System.dll>
#using "RemoteObject.dll"

using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Activation;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Tcp;

[STAThread]
int main()
{
   
   // Report initial status.
   Console::WriteLine( "Client starting." );
   
   // Register TCP channel.
   ChannelServices::RegisterChannel( gcnew TcpChannel );
   
   // Create UrlAttribute.
   UrlAttribute^ attribute = gcnew UrlAttribute( "tcp://localhost:1234/RemoteApp" );
   Console::WriteLine( "UrlAttribute value: {0}", attribute->UrlValue );
   
   array<Object^>^activationAttributes = {attribute};
   
   // Use UrlAttribute to register for client activated remote object.
   RemotingConfiguration::RegisterActivatedClientType( RemoteObject::typeid, "tcp://localhost:1234/RemoteApp" );
   
   // Activate remote object.
   Console::WriteLine( "Activating remote object." );
   RemoteObject ^ obj = dynamic_cast<RemoteObject^>(Activator::CreateInstance( RemoteObject::typeid, nullptr, activationAttributes ));
   
   // Invoke a method on it.
   Console::WriteLine( "Invoking Hello() on remote object." );
   obj->Hello();
   
   // Inform user of termination.
   Console::WriteLine( "Terminating client." );
}

using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Activation;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using System.Security.Permissions;

public class Client
{
[SecurityPermission(SecurityAction.Demand)]
    [STAThread]
    public static void Main()
    {
        // Report the initial status.
        Console.WriteLine("Starting client.");

        // Register the TCP channel.
        ChannelServices.RegisterChannel(new TcpChannel());

        // Create a url attribute object.
        UrlAttribute attribute = 
            new UrlAttribute("tcp://localhost:1234/RemoteApp");
        Console.WriteLine("UrlAttribute value: {0}", attribute.UrlValue);
        object[] activationAttributes = new object[] { attribute };

        // Register the client for the remote object.
        RemotingConfiguration.RegisterActivatedClientType(
            typeof(RemoteObject), 
            "tcp://localhost:1234/RemoteApp");

        // Activate the remote object.
        Console.WriteLine("Activating remote object.");
        RemoteObject obj = (RemoteObject) Activator.CreateInstance(
            typeof(RemoteObject), null, activationAttributes);

        // Invoke a method on the remote object.
        Console.WriteLine("Invoking Hello() on remote object.");
        obj.Hello();

        // Inform the user that the program is exiting.
        Console.WriteLine("The client is exiting.");
    }
}

Esempio di codice seguente illustra un server per questo client:The following code example shows a server for this client:

#using <System.Runtime.Remoting.dll>
#using <System.dll>
#using "RemoteObject.dll"

using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Tcp;

[STAThread]
int main()
{
   
   // Report status to user.
   Console::WriteLine( "Server starting." );
   
   // Register the TCP channel.
   ChannelServices::RegisterChannel( gcnew TcpChannel( 1234 ) );
   
   // Set application name.
   RemotingConfiguration::ApplicationName = "RemoteApp";
   
   // Register object for client activated remoting.
   RemotingConfiguration::RegisterActivatedServiceType( RemoteObject::typeid );
   
   // Wait until termination.
   Console::WriteLine( "Press enter to end." );
   Console::ReadLine();
   Console::WriteLine( "Terminating server." );
}

using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

public class Server
{
    [STAThread]
    public static void Main()
    {
        // Report the status to the user.
        Console.WriteLine("Starting server.");

        // Register the TCP channel.
        ChannelServices.RegisterChannel(new TcpChannel(1234));

        // Set the application name.
        RemotingConfiguration.ApplicationName = "RemoteApp";

        // Register the object for remoting.
        RemotingConfiguration.RegisterActivatedServiceType(
            typeof(RemoteObject));

        // Wait until the user presses ENTER.
        Console.WriteLine("Press ENTER to exit.");
        Console.ReadLine();
        Console.WriteLine("The server is exiting.");
    }
}

Esempio di codice seguente mostra l'oggetto remoto che viene usato dal client e server:The following code example shows the remote object that is used by the client and the server:

using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;

[assembly:AllowPartiallyTrustedCallersAttribute];
public ref class RemoteObject: public MarshalByRefObject
{
public:
   RemoteObject()
   {
      
      // Report object construction to server's console.
      Console::WriteLine( "You have called the constructor." );
   }

   void Hello()
   {
      
      // Report method invocation to server's console.
      Console::WriteLine( "You have called Hello()." );
   }

};

using System;
using System.Security;
using System.Security.Permissions;

public class RemoteObject : MarshalByRefObject
{
    public RemoteObject()
    {
        Console.WriteLine("You have called the constructor.");
    }

    public void Hello()
    {
        Console.WriteLine("You have called Hello().");
    }
}

Commenti

Il UrlAttribute viene passato come parametro nella matrice di attributi di attivazione Activator.CreateInstance quando la creazione di oggetti con attivati i CreateInstance (metodo).The UrlAttribute is passed in the activation attributes array as a parameter to Activator.CreateInstance when creating activated objects with the CreateInstance method.

Per altre informazioni sull'utilizzo di attributi, vedere attributi.For more information about using attributes, see Attributes.

Costruttori

UrlAttribute(String) UrlAttribute(String) UrlAttribute(String) UrlAttribute(String)

Crea una nuova istanza della classe UrlAttribute. Creates a new instance of the UrlAttribute class.

Proprietà

Name Name Name Name

Ottiene il nome dell'attributo di contesto. Gets the name of the context attribute.

(Inherited from ContextAttribute)
TypeId TypeId TypeId TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute. When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)
UrlValue UrlValue UrlValue UrlValue

Ottiene il valore URL dell'oggetto UrlAttribute. Gets the URL value of the UrlAttribute.

Metodi

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Verifica se l'oggetto specificato fa riferimento allo stesso URL dell'istanza corrente. Checks whether the specified object refers to the same URL as the current instance.

Freeze(Context) Freeze(Context) Freeze(Context) Freeze(Context)

Chiamato quando viene bloccato il contesto. Called when the context is frozen.

(Inherited from ContextAttribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Restituisce il valore hash per l'oggetto UrlAttribute corrente. Returns the hash value for the current UrlAttribute.

GetPropertiesForNewContext(IConstructionCallMessage) GetPropertiesForNewContext(IConstructionCallMessage) GetPropertiesForNewContext(IConstructionCallMessage) GetPropertiesForNewContext(IConstructionCallMessage)

Impone la creazione del contesto e dell'oggetto server all'interno del contesto dell'URL specificato. Forces the creation of the context and the server object inside the context at the specified URL.

GetType() GetType() GetType() GetType()

Ottiene l'oggetto Type dell'istanza corrente. Gets the Type of the current instance.

(Inherited from Object)
IsContextOK(Context, IConstructionCallMessage) IsContextOK(Context, IConstructionCallMessage) IsContextOK(Context, IConstructionCallMessage) IsContextOK(Context, IConstructionCallMessage)

Restituisce un valore Boolean che indica se la classe Context specificata soddisfa i requisiti della classe UrlAttribute. Returns a Boolean value that indicates whether the specified Context meets UrlAttribute's requirements.

IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
IsNewContextOK(Context) IsNewContextOK(Context) IsNewContextOK(Context) IsNewContextOK(Context)

Restituisce un valore Boolean indicante se la proprietà di contesto è compatibile con il nuovo contesto. Returns a Boolean value indicating whether the context property is compatible with the new context.

(Inherited from ContextAttribute)
Match(Object) Match(Object) Match(Object) Match(Object)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente. Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Restituisce una stringa che rappresenta l'oggetto corrente. Returns a string that represents the current object.

(Inherited from Object)

Implementazioni dell'interfaccia esplicita

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch. Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia. Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1). Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto. Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Campi

AttributeName AttributeName AttributeName AttributeName

Indica il nome dell'attributo di contesto. Indicates the name of the context attribute.

(Inherited from ContextAttribute)

Si applica a

Vedi anche