Мастера .NET REMOTING, отзовитесь !!!
От: MegaWolf510  
Дата: 28.02.06 10:38
Оценка:
Господа, уже очень долго мучаюсь с одной проблемой с .NET REMOTING, которая
просто перечёркивает её дальнейшее изучение...

Проблема общая, связанная с тем, что, конечно, легко осуществлять в ремотинг прямую связь, тоесть вызываеть
методы удалённого объекта, но вот как насчёт обратной связи??? когда сам объект активирует событие и вызывает
делегаты клиентов??? Везде в книгах, где я только не смотрел, ничего не написано про мою проблему...
Все обещают, что если напишешь прогу в этом стиле(как в примере), то обязательно будет работать...
В общем, на обратной связи у меня и проблема. Когда в клиентах производится подписание на событие

msg.NewMsg += new NewMsgEventHandler(MessageReceived);

возникает исключение : Type System.DelegateSerializationHolder and the types derived from it (such as System.DelegateSerializationHolder) are not permitted to be deserialized at this security level.

для примера я наклепал код:
(Все сборки со строгим именем, в программах клиент и сервер установил режим полного доверия (Проект->Properties->
Security->Enable ClickOnce Security Settings->This is a full trust application);

1. Sdk.dll:

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting;

namespace Sdk
{
public delegate void NewMsgEventHandler(string Message);

public class Messager : MarshalByRefObject
{
public event NewMsgEventHandler NewMsg;

public void SendMessage(string msg)
{
NewMsg(msg);
}
}
}

2. Client.exe:
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using Sdk;

namespace Client
{
class Program
{
public static void MessageReceived(string msg)
{
Console.WriteLine("\n"+msg);
}

static void Main(string[] args)
{
ChannelServices.RegisterChannel(new TcpChannel(0));
RemotingConfiguration.RegisterWellKnownClientType(typeof(Messager), "tcp://localhost:4000/Messager");

Messager msg = new Messager();
msg.NewMsg += new NewMsgEventHandler(MessageReceived);

string message = "";
while (message != "exit")
{
Console.Write("Enter message:");
message = Console.ReadLine();

msg.SendMessage(message);
}
}
}
}

3. Server.exe :
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using Sdk;

namespace Server
{
class Program
{
static void Main(string[] args)
{
TcpChannel channel = new TcpChannel(4000);
ChannelServices.RegisterChannel(channel);

RemotingConfiguration.RegisterWellKnownServiceType(typeof(Messager), "Messager",
WellKnownObjectMode.Singleton);

Console.WriteLine("Type Enter to exit...");
Console.ReadLine();
}
}
}


--------------------------------------------------!!!Очень буду благодарен !!!-----------------------------------
Мастера .NET REMOTING, отзовитесь !!!
От: Аноним  
Дата: 17.03.06 21:25
Оценка:
Еще актуально отвечать или уже разобрался?
С Уважением, Вячеслав.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Мастера .NET REMOTING, отзовитесь !!!
От: just_kID Россия  
Дата: 20.03.06 06:10
Оценка:
Здравствуйте, mslava, Вы писали:

M>Еще актуально отвечать или уже разобрался?


M>
данное сообщение получено с www.gotdotnet.ru

M>ссылка на оригинальное сообщение

да да, актуально)) хотелось бы узнать.
когда рассказываете о своих достижениях, жалейте чувства других (с)афоризмы)
Мастера .NET REMOTING, отзовитесь !!!
От: Аноним  
Дата: 25.05.06 10:33
Оценка:
На всякий случай, чтобы не оставлять топик без ответа: http://www.thinktecture.com/Resources/RemotingFAQ/Changes2003.html



данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.