Auf dem Servr werden die Daten so angeboten:
========================================================================================================================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using InboundQueueEIC_clientCom;
using infoDashboard_Objects;
namespace infoDashboard_QueueStatsService_EIC
{
public partial class QueueStatsService : ServiceBase
{
public QueueStatsService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
TcpChannel tcpChannel = new TcpChannel(9998);
ChannelServices.RegisterChannel(tcpChannel);
Type commonInterfaceType = Type.GetType("Queues");
RemotingConfiguration.RegisterWellKnownServiceType(commonInterfaceType,
"QueueStats", WellKnownObjectMode.Singleton);
InboundQueueEIC_clientCom.BusinessLogic.startServer();
}
protected override void OnStop()
{
InboundQueueEIC_clientCom.BusinessLogic.DisconnectFromEICServer();
}
}
}
public interface QueuesInterface
{
System.Collections.Generic.List<infoDashboard_Objects.Queue_Data>
GetQueueStats();
}
public class Queues : MarshalByRefObject, QueuesInterface
{
public System.Collections.Generic.List<infoDashboard_Objects.Queue_Data>
GetQueueStats()
{
return InboundQueueEIC_clientCom.BusinessLogic.lQueue;
}
}
========================================================================================================================
Die Daten werden auch in der List schönd gespeichert und mittels einer Test
App zugänglich.
Ich muss nun aber dies von einigen Clients machen und habe hierfür in einer
TestApp diesen Code mal implementiert um das ganze zu testen
========================================================================================================================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using infoDashboard_Objects;
namespace _TestAppRemotingClient
{
public partial class Client : Form
{
List<Queue_Data> queues = new List<Queue_Data>();
public Client()
{
InitializeComponent();
}
private void Client_Load(object sender, EventArgs e)
{
TcpChannel tcpChannel = new TcpChannel();
ChannelServices.RegisterChannel(tcpChannel);
}
Type requiredType = typeof(MovieTicketInterface);
private void button1_Click(object sender, EventArgs e)
{
try
{
QueuesInterface remoteObjectQueues =
(QueuesInterface)Activator.GetObject(requiredType,
"tcp://PC001:9998/QueueStats");
queues = remoteObjectQueues.GetQueueStats();
}
catch (Exception exp)
{
textBox1.Text = "Connection to Server lost...";
}
}
}
}
public interface QueuesInterface
{
System.Collections.Generic.List<infoDashboard_Objects.Queue_Data>
GetQueueStats();
}
========================================================================================================================
Ich bekomme aber immer diese Fehlermeldung präsentiert:
"Der Typ "infoDashboard_Objects.Queue_Data" in Assembly
"infoDashboard_Objects, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null" ist nicht als serialisierbar gekennzeichnet."
Mit einem String oder Datetime etc. klappt das ganze wunderbar.
Die kriege ich es dazu damit mein Object auch Serialisierbar wird?
Danke für jeden Tip
Volkan
> Die kriege ich es dazu damit mein Object auch Serialisierbar wird?
Entweder ISerializable implementieren, oder [Serializable] über die
Klassendeklaration schreiben und hoffen, dass die Standard-Formatter
damit klarkommen. ;-)
Mit freundlichen Gruessen / Best regards,
Karsten Samaschke
--
IT-Consulting, IT-Training, IT-Development
Web: http://www.ksamaschke.de
Blog: http://www.karsan.de
Family: http://www.familyblogger.de
Community: http://www.aspnetzone.de
Sent via MacBook / OS X 10.5 (Leopard)
Mit
using System;
[Serializable]
public class Employee {...
klappt dies wunderbar ;)
gruss
Volkan
"Karsten Samaschke" <kar...@samaschke.de> schrieb im Newsbeitrag
news:%23k3qW$stJHA...@TK2MSFTNGP02.phx.gbl...