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


RemotingServices.SetObjectUriForMarshal(MarshalByRefObject, String) Метод

Определение

Задает URI для дальнейшего вызова в метод Marshal(MarshalByRefObject).

public:
 static void SetObjectUriForMarshal(MarshalByRefObject ^ obj, System::String ^ uri);
public static void SetObjectUriForMarshal (MarshalByRefObject obj, string uri);
static member SetObjectUriForMarshal : MarshalByRefObject * string -> unit
Public Shared Sub SetObjectUriForMarshal (obj As MarshalByRefObject, uri As String)

Параметры

obj
MarshalByRefObject

Объект, для которого задается URI.

uri
String

URI, которое приписывается заданному объекту.

Исключения

obj не является локальным объектом, уже был упакован и передан или на него вызван текущий метод.

По крайней мере у одного из вызывающих операторов, находящихся в верхней части стека вызовов, отсутствует разрешение на настройку типов и каналов удаленного взаимодействия.

Примеры

В следующем примере кода показано, как задать универсальный код ресурса (URI), который будет использоваться методом Marshal при маршалинге указанного объекта.

using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Security::Permissions;

public ref class SetObjectUriForMarshalTest
{
public:
   ref class TestClass: public MarshalByRefObject{};

   [SecurityPermissionAttribute(SecurityAction::Demand, Flags=SecurityPermissionFlag::RemotingConfiguration)]   
   static void Main()
   {
      TestClass^ obj = gcnew TestClass;
      RemotingServices::SetObjectUriForMarshal( obj,  "testUri" );
      RemotingServices::Marshal(obj);
      Console::WriteLine( RemotingServices::GetObjectUri( obj ) );
   }

};
using System;
using System.Runtime.Remoting;

public class SetObjectUriForMarshalTest  {

    class TestClass : MarshalByRefObject {
    }

    public static void Main()  {

        TestClass obj = new TestClass();

        RemotingServices.SetObjectUriForMarshal(obj, "testUri");
        RemotingServices.Marshal(obj);

        Console.WriteLine(RemotingServices.GetObjectUri(obj));
    }
}
Imports System.Runtime.Remoting
Imports System.Security.Permissions


Public Class SetObjectUriForMarshalTest
    
    Class TestClass
        Inherits MarshalByRefObject
    End Class

    <SecurityPermission(SecurityAction.Demand, Flags:= SecurityPermissionFlag.RemotingConfiguration )> _
    Public Shared Sub Main()
        Dim obj As TestClass = New TestClass()

        RemotingServices.SetObjectUriForMarshal(obj, "testUri")
        RemotingServices.Marshal(obj)

        Console.WriteLine(RemotingServices.GetObjectUri(obj))
    End Sub

End Class

Комментарии

URI, заданный текущим методом, используется при маршалинге заданного объекта.

После маршалинга URI указанного объекта устанавливается в строку в параметре uri , добавляемом к Guid текущему объекту AppDomain.

Если текущее приложение прослушивает HTTP-порт, то и строка, указанная в параметре , и uri строка, добавленная Guid к uri текущему AppDomain маршруту к указанному объекту. Например, если приложение прослушивает HTTP-порт 9000, то http://localhost:9000/objectUriи , и http://localhost:9000/<appdomainguid>/objectUri маршрутит к объекту, указанному в параметре obj .

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

См. также раздел