See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.Runtime.Remoting.RemotingException: Requested Service not found
Server stack trace:
at System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at MyCoolClass.addthemall(Int32 first, Int32 second)
at WindowsClient.MyForm.CalculateLinkLabel_LinkClicked(Object sender, LinkLabelLinkClickedEventArgs e) in C:\Documents and Settings\Administrator\My Documents\ServerApplication\WindowsClient\MyForm.cs:line 33
at ...
Наболевшие проблемы с NET Remoting ("RemotingException: Requested service not found")
Я изучаю технологию NET Remoting. Руководствуясь инструкциями на множестве форумов, в MSDN'е и на rsdn.ru, я создал тестовый сервер и клиент (в который раз …). Но при запуске клиента мне выдается следующее сообщение:
Код:
Код сервера следующий:
Код:
public class MyCoolClass : MarshalByRefObject
{
public void addthemall(int first, int second)
{
MessageBox.Show((first + second).ToString() + "\n" + Assembly.GetExecutingAssembly().Location + "\n" + Thread.CurrentThread.CurrentUICulture.ToString() + "\n" + Assembly.GetExecutingAssembly().FullName);
}
}
class Program
{
static void Main(string[] args)
{
ChannelServices.RegisterChannel(new TcpServerChannel(8082), false);
RemotingConfiguration.ApplicationName = "MyCoolApp";
RemotingConfiguration.RegisterWellKnownServiceType(typeof(MyCoolClass), "MyCoolClass", WellKnownObjectMode.SingleCall);
System.Console.Write("Processing connections ...");
Console.ReadLine();
}
}
{
public void addthemall(int first, int second)
{
MessageBox.Show((first + second).ToString() + "\n" + Assembly.GetExecutingAssembly().Location + "\n" + Thread.CurrentThread.CurrentUICulture.ToString() + "\n" + Assembly.GetExecutingAssembly().FullName);
}
}
class Program
{
static void Main(string[] args)
{
ChannelServices.RegisterChannel(new TcpServerChannel(8082), false);
RemotingConfiguration.ApplicationName = "MyCoolApp";
RemotingConfiguration.RegisterWellKnownServiceType(typeof(MyCoolClass), "MyCoolClass", WellKnownObjectMode.SingleCall);
System.Console.Write("Processing connections ...");
Console.ReadLine();
}
}
Код клиента следующий:
Код:
namespace WindowsClient
{
public partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
}
private void CalculateLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
ChannelServices.RegisterChannel(new TcpClientChannel(), false);
RemotingConfiguration.RegisterWellKnownClientType(typeof(MyCoolClass), "tcp://localhost:8082/MyCoolApp/MyCoolClass.rem");
MyCoolClass MCC = new MyCoolClass();
MCC.addthemall(Int32.Parse(this.NumTextBox1.Text),Int32.Parse(this.NumTextBox2.Text));
}
}
}
{
public partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
}
private void CalculateLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
ChannelServices.RegisterChannel(new TcpClientChannel(), false);
RemotingConfiguration.RegisterWellKnownClientType(typeof(MyCoolClass), "tcp://localhost:8082/MyCoolApp/MyCoolClass.rem");
MyCoolClass MCC = new MyCoolClass();
MCC.addthemall(Int32.Parse(this.NumTextBox1.Text),Int32.Parse(this.NumTextBox2.Text));
}
}
}
До этого пытался заставить работать все с конфигами, а также при помощи кучи других способов (HTTP/TCP). НЕ РАБОТАЕТ. Даже на разных компьютерах запускал, все бестолку. В случае же если я настраиваю ремоутинг при помощи конфига то у меня просто вызывается локальный объект :(. Помогите пожалуйста понять в чем проблема. Что я делаю не так?
Весь код тестового проекта находится по следующему пути:
http://artiomivanov.com/ServerApplication.rar
У меня и первый и второй фреймворки, + по умолчанию комплект идущий с 2005-м VS. Операционка Windows XP с отключенным фаерволом. Параметры безопасности фреймворка вообще не трогал, а работаю исключительно под админом.
Там же точно должна быть какая то тонкость, типа как когда я создавал COM объект на .NET то оказалось что для нормальной работы ему нужен strong name, а об этом никто нормально ничего нигде не писал. Я сам случайно догадался.
PS: И вообще, есть ли где учебники по .NET, не типо по синтаксису c#, А ПО .NET???! По MSIL коду, NET Remoting'у, и другим интересным темам. Интересуют интернет и бумажные варианты.
С уважением.