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 не является локальным объектом, уже был маршалирован или текущий метод уже вызван.
По крайней мере один из вызывающих абонентов в calltack не имеет разрешения на настройку типов и каналов удаленного взаимодействия.
Примеры
В следующем примере кода показано, как задать универсальный код ресурса (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 параметре, и uri строка, добавленная к Guid текущему AppDomain маршруту к указанному объекту. Например, если приложение прослушивает HTTP-порт 9000, то и то и другое http://localhost:9000/objectUri, и http://localhost:9000/<appdomainguid>/objectUri маршрутив к объекту, указанному в параметре obj .