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)
Параметры
Объект, для которого задается 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
.