Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von caldicot
Thema: Rainbird Zyan: Exception
Am im Forum: Netzwerktechnologien

Hallo Rainbird,

Ich kann mich gar nicht genügend bedanken :)
Wirklich toll, wie Du mich unterstützt.

Nachdem Zyan ein besseres Authentifizierungssysteme integriert hat, als ich jemals selber zusammen stümpern könnte, habe ich gleich versucht dieses zu integrieren. Mit Erfolg.

Sowohl das Session Managment als auch das Permission Managment wird jetzt mit Zyan behandelt.
Danke für Deine sehr hilfreiche Beschreibung.

Ein kleines Problem hab ich noch:
Wenn Zyan eine WebException schmeißt, weil der Server nicht erreichbar ist, dann fange ich die ab und die LoginForm wird mit dem Fehler Hinweis erneut aufgerufen.

Wenn der User jetzt die LoginForm schließt, dann wird bei dem FormClosing-Event Enviroment.Exit(0) aufgerufen.
Allerdings stürzt hier das Programm ab, mit dem Hinweis, dass die WebException nicht behandelt wurde.

Ich verstehe nicht ganz warum, weil die ja nur beim Instanziieren von Zyan ausgelöst wird, falls kein Server zu erreichen ist?

Danke
caldi

P.S.
Dein Notification System habe ich noch nicht geschafft zu testen, mache ich im Laufe des Tages...

Thema: RainBirds Zyan: Server Event am Client abrufen (oder Alternativen?)
Am im Forum: Netzwerktechnologien

Hallo Rainbird,

HERZLICHEN DANK!
Probiere ich gleich morgen aus!

Wahnsinn wie schnell das bei Dir geht :)

Nochmals Danke!
Viele Grüße
caldi

Thema: Rainbird Zyan: Exception
Am im Forum: Netzwerktechnologien

Hallo Rainbird,

und wieder herzlichen Dank für Deine schnelle und ausführliche Antwort.

Ich habe die Klasse entsprechend deinem Vorbild angepasst.
Die schaut jetzt so aus:


    [Serializable]
    public class UserWrongPasswordException : Exception, ISerializable
    {
        public UserWrongPasswordException()
        {
        }

        public UserWrongPasswordException(string message)
            : base(message)
        {
        }

        public UserWrongPasswordException(string message, Exception innerException)
            : base(message, innerException)
        {
        }

        protected UserWrongPasswordException(SerializationInfo info, StreamingContext context)
            : base(info, context)
        {
        }

        public override void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            base.GetObjectData(info, context);
        }
    }

Funktioniert leider immer noch nicht.

Stack Trace:
Zitat
System.Reflection.TargetInvocationException wurde nicht behandelt.
Message=Ein Aufrufziel hat einen Ausnahmefehler verursacht.
Source=Zyan.Communication
StackTrace:
Server stack trace:
bei Zyan.Communication.ComponentInvoker.Invoke(String interfaceName, ArrayList outputPinCorrelationSet, String methodName, Object[] args)
bei System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
bei System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
Exception rethrown at [0]:
bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
bei Zyan.Communication.IComponentInvoker.Invoke(String interfaceName, ArrayList outputPinCorrelationSet, String methodName, Object[] args)
bei Zyan.Communication.ZyanProxy.InvokeRemoteMethod(IMethodCallMessage methodCallMessage)
Exception rethrown at [1]:
bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
bei Shared.Userverwaltung.IUserverwaltung.login(String userName, String password)
bei Login.LoginForm.checkLogin() in C:\Users\...\Login\LoginForm.cs:Zeile 79.
bei Login.LoginForm.bt_login_Click(Object sender, EventArgs e) in C:\Users\...\Login\LoginForm.cs:Zeile 110.
bei System.Windows.Forms.Control.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
bei System.Windows.Forms.Button.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms. UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.RunDialog(Form form)
bei System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
bei System.Windows.Forms.Form.ShowDialog()
bei Login.LoginForm.ShowDialog() in C:\Users\...\Login\LoginForm.cs:Zeile 46.
bei Client.Form1..ctor() in C:\Users\...\Client\Form1.cs:Zeile 25.
bei Client.Program.Main() in C:\Users\...\Client\Program.cs:Zeile 18.
bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bei System.Threading.ThreadHelper.ThreadStart()
InnerException: Shared.Userverwaltung.UserWrongPasswordException
Message=Eine Ausnahme vom Typ "Shared.Userverwaltung.UserWrongPasswordException" wurde ausgelöst.
Source=Server
StackTrace:
bei Server.Userverwaltung.Userverwaltung.login(String userName, String password) in C:\Users\...\Server\Userverwaltung\Userverwaltung.cs:Zeile 135.
InnerException:

Dass Zyan ein Authentifizierungssystem dabei hat, habe ich gelesen.
Leider habe ich es nicht verstanden X(
Zu meiner Verteidung muss ich sagen, dass ich erst im 3. Semester bin

In der Klasse die, die registrierte Benutzer speichert, habe ich das IAuthenticationProvider implementiert und die Methode Authenticate() implementiert.

Ich hab nicht verstanden wie ich mit dem AuthRequestMessage umgehen muss.
Das Objekt beinhaltet ja die vom User angegebenen User-Daten?
Muss der Client in den HashTable User und Password setzten?
Z.B. so:


authMessage.Credentials["name"] = "myUserName";
authMessage.Credentials["pw"] = "myPassword";
entsprechend dann serverseitig die Überprüfung...

Sorry ist bestimmt die absolute n00b Frage. Ich sehs einfach nicht...

Im Moment gebe ich bei erfolgreichem Login das MyUser Objekt des eingeloggten Users zurück.
Damit ich auf dem Client die Berechtigungsstufe abfragen kann.
Wird sowas in echt anders gelöst oder wie könnte ich das mit Zyan realisiseren?

Ich steh wie immer auf dem Schlauch
Danke für Deine Hilfe UND Deine Geduld.
caldi

Thema: Rainbird Zyan: Exception
Am im Forum: Netzwerktechnologien

Hi,

ich bin's schon wieder :)
Ich bin über ein neues Problem gestolpert und weiß nicht weiter.

Mittels Zyan veröffentliche ich eine Klasse die eine eigene Exception werfen kann.

Die Exception schaut so aus:


    [Serializable()]
    public class UserWrongPasswordException : ArgumentException
    {
        public UserWrongPasswordException()
            : base()
        {
        }

        public UserWrongPasswordException(string message)
            : base(message)
        {
        }

        protected UserWrongPasswordException(SerializationInfo info, StreamingContext sctxt)
            : base(info, sctxt)
        {
        }

        public override void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            base.GetObjectData(info, context);
        }
    }

Wenn auf dem Client die Methode der Klasse aufgerufen wird, die diese Exception wirft, bekomme ich eine TargetInvocationException: "Ein Aufrufziel hat einen Ausnahmefehler verursacht".
In der InnerException steht "Der Wert liegt außerhalb des erwarteten Bereichs".
Ich kann aber mit der Fehlermeldung nichts anfangen. Welcher Wert / Bereich ist denn gemeint?

Mittels Debug sehe ich, dass die Exception Klasse aufgerufen wird, und erst danach der Fehler zustande kommt.

Wenn ich Google zu Exception und Remoting frage, finde ich nur den Hinweis, dass die Klasse Serializable sein muss, Konstuktor und GetObjectData beinhalten muss.

Hab ich irgendwas falsch gemacht?
Oder funktionieren auch Exception nicht so leicht via Remoting?

Danke für Eure Hilfe.
Caldi

Thema: BinaryFormatter mit Umlaute (ÄÜÖß)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

ich habe mein Bug gefunden.
Es hatte NICHTS mit der Serialisierung zu tun :tongue:

Ich lese aus einer CSV die Namen aus.
Die CSV war ANSI Codiert, ich habe aber UTF8 gelesen eben um Umlaute zu erkennen.

Jetzt habe ich die CSV UTF8 kodiert und siehe da: Jetzt funktionieren auch Umlaute vor und nach der Serialisierung bzw. Deserialisiserung 8)

Sorry, da war ich völlig auf der falschen Fährte

Vielen Dank für Eure Hilfe
caldi

Thema: BinaryFormatter mit Umlaute (ÄÜÖß)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi,

hier meine Methoden zur Serialisiserung:

Konstuktor:


        public Status(SerializationInfo info, StreamingContext ctxt)
        {
            this.m_kennung = (string)info.GetValue("kennung", typeof(string));
            this.m_name = info.GetValue("name", typeof(string));
            this.m_status = (string)info.GetValue("status", typeof(string));
            this.m_farbe = (Color)info.GetValue("farbe", typeof(Color));
            this.m_isMine = proofMine();
            this.m_zeit = (DateTime)info.GetValue("zeit", typeof(DateTime));
        }
Hat er hier ein Problem mit dem Cast?
Ist info.GetString() besser?


GetObjectData:


        public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
        {
            info.AddValue("kennung", this.m_kennung);
            info.AddValue("name",  this.m_name);
            info.AddValue("status", this.m_status);
            info.AddValue("farbe", this.m_farbe);
            info.AddValue("zeit", this.m_zeit);
        }



Danke
caldi

Thema: BinaryFormatter mit Umlaute (ÄÜÖß)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Nach meiner Deserialisierung sind die Umlaute komische Zeichen.
Ich habe aber nichts an der Kodierung geändert oder ähnliches.
Ich rufe die oben gepostete Methoden auf und nach der Deserialisiserung sind eben die Umlaute weg.

Thema: BinaryFormatter mit Umlaute (ÄÜÖß)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi,

ich bin mir nicht 100% sicher wo die Umlaute verloren gehen.
Wenn ich serialisiert habe und mir das File mit Notepad++ anschaue, dann kann er hier keine Umlaute darstellen.

Jetzt kann natürlich auch Notepad++ falsch lesen.
Ich nehme an, dass das schon beim Schreiben passiert beim BinaryFormatter.

Wie könnte ich denn das rauskriegen, wann das passiert?
Im Debug habe ich nicht gesehen, dass ich einen Stream-Inhalt "anschauen" kann.

EDIT:
Hier meine deserialize-Methode


        public static T deserialize<T>(string file)
        {
            if (!File.Exists(file))
            {
                throw new FileNotFoundException();
            }

            T obj;
            Stream stream = File.Open(file, FileMode.Open, FileAccess.Read);
            BinaryFormatter bFormatter = new BinaryFormatter();
            obj = (T)bFormatter.Deserialize(stream);
            stream.Close();
            return obj;
        }

Danke für Deine Hilfe und sorry für die dummen Fragen :)
caldi

Thema: BinaryFormatter mit Umlaute (ÄÜÖß)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi,

sorry ich steh grad aufm Schlauch.

Ich seh bei MSDN niergends, dass der FileStream eine Kodierung annimt. Nur der StreamWriter, den ich aber nicht hernehme, weil ich ja das Objekt mit dem BinaryFormatter serialisieren und ins File schreiben will.

Sorry, ich versteh grad überhaupt nix ?(

Danke
caldi

Thema: BinaryFormatter mit Umlaute (ÄÜÖß)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi,

danke für eine Antwort.
Allerdings komm ich trotzdem nicht so recht weiter.

Wo müsste ich denn das Encoding ändern?
Ich dachte die Strings in C# wären alle Unicode?
Und dem BinaryFormatter kann ich keine Kodierung mitgeben?

Könntest du bitte etwas genauer erklären was du meinst?

Danke
caldi

Thema: RainBirds Zyan: Server Event am Client abrufen (oder Alternativen?)
Am im Forum: Netzwerktechnologien

Hallo Rainbird,

danke für deine Hilfe.
Ich werde versuchen das anhand des Beispiels hinzukriegen. :)

Zitat
Ich versuche, ein Standard Zyan Benachrichtigungs-Feature noch bis Ende der Woche fertig zu bekommen. Wenn es fertig ist, sage ich Bescheid.

Das klingt ja super ;)

Vielen Dank für deine Mühen.
caldi

Thema: BinaryFormatter mit Umlaute (ÄÜÖß)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi,

ich versuche eine Klasse mit dem BinaryFormatter zu serialisieren.
Das funktioniert auch grundsätzlich.

In der Klasse habe ich einen Konstuktor zur Deserialisierung angelegt:


public Status(SerializationInfo info, StreamingContext ctxt)

und eine Methode zur Serialisierung:


public void GetObjectData(SerializationInfo info, StreamingContext ctxt)


Hier der Code der Serialisierungs-Methode:

        
public void bool serialize(string file, Object obj)
{
FileStream stream = new FileStream(file, FileMode.Create);
BinaryFormatter bFormatter = new BinaryFormatter();
bFormatter.Serialize(stream, obj);
stream.Close();
}

Dabei gehen aber Umlaute der String-Attribute der Klasse verloren.
Ich habe niergends einen Hinweis gefunden, wie man sowas lösen könnte.

Den XMLSerializer will ich eigtl. nicht hernehmen, da die Klasse immutabel sein soll und ich - wenn ich das richtig verstanden habe - Getter und Setter für alle serialisierbaren Attribute und einen Default-Konstuktor für die Klasse benötige.
In dem Konstuktor werden die Werte der Attribute gesetzt und deswegen will ich keinen Default-Konstruktor zulassen.

Gibt es wirklich keine andere Lösung?
Muss ich hier die XMLSerializer hernehmen.

Vielen Dank
caldi

Thema: RainBirds Zyan: Server Event am Client abrufen (oder Alternativen?)
Am im Forum: Netzwerktechnologien

Hallo Rainbird,

Danke für deine schnelle Antwort.

Wäre das ein Beispiel für das von dir beschriebene Zwischenstück?
.NET Remoting - Events, Events? Events!

oder das?

Events and Delegates in Remoting

Habe leider keine echte Idee, wie ich sowas implementieren kann. :(

Schön zu hören, dass dieses Problem zukünftig mit Zyan leicht zu lösen sein wird :)

Viele Grüße
caldi

Thema: RainBirds Zyan: Server Event am Client abrufen (oder Alternativen?)
Am im Forum: Netzwerktechnologien

Hi,

hier die ganze Exception.

Würde das denn grundsätzlich mit dem Event funktionieren oder ist das sowieso konzeptionell zu vermeiden?

Zitat
"System.Reflection.TargetInvocationException" wurde aufgefangen.
Message=Ein Aufrufziel hat einen Ausnahmefehler verursacht.
Source=mscorlib
StackTrace:
Server stack trace:
bei System.RuntimeMethodHandle._SerializationInvoke(IRuntimeMethodInfo method, Object target, SignatureStruct& declaringTypeSig, SerializationInfo info, StreamingContext context)
bei System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj, SerializationInfo info, StreamingContext context)
bei System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder)
bei System.Runtime.Serialization.ObjectManager.DoFixups()
bei System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
bei System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
bei System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryRequestMessage(String objectUri, Stream inputStream, Boolean bStrictBinding, TypeFilterLevel securityLevel)
bei System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)
Exception rethrown at [0]:
bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
bei Zyan.Communication.IComponentInvoker.Invoke(String interfaceName, ArrayList outputPinCorrelationSet, String methodName, Object[] args)
bei Zyan.Communication.ZyanProxy.InvokeRemoteMethod(IMethodCallMessage methodCallMessage)
Exception rethrown at [1]:
bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
bei Shared.Komponenten.ITest.add_MyEvent(EventHandler`1 value)
bei Client.Form1.Form1_Load(Object sender, EventArgs e) in C:\Users\...\Client\Form1.cs:Zeile 31.
InnerException: System.IO.FileNotFoundException
Message=Die Datei oder Assembly "Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.
Source=mscorlib
FileName=Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
FusionLog=WRN: Protokollierung der Assemblybindung ist AUS.
Sie können die Protokollierung der Assemblybindungsfehler aktivieren, indem Sie den Registrierungswert [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) auf 1 festlegen.
Hinweis: Die Protokollierung der Assemblybindungsfehler führt zu einer gewissen Leistungseinbuße.
Sie können dieses Feature deaktivieren, indem Sie den Registrierungswert [HKLM\Software\Microsoft\Fusion!EnableLog] entfernen.

StackTrace:
bei System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
bei System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
bei System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks)
bei System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
bei System.Reflection.Assembly.Load(String assemblyString)
bei System.Runtime.Serialization.FormatterServices.LoadAssemblyFromString(String assemblyName)
bei System.Reflection.MemberInfoSerializationHolder..ctor(SerializationInfo info, StreamingContext context)
InnerException:

Thema: RainBirds Zyan: Server Event am Client abrufen (oder Alternativen?)
Am im Forum: Netzwerktechnologien

Hi,

Ich habe eine Klasse, die 2 Listen beinhaltet. Darin habe ich 2 Events implementiert (wie in [Lösung] Problem mit EventHandler beschrieben)
Für jede Liste gibt es eine Add-Methode().
Beim Aufruf der Methode wird das Event gefired.
Lokal funktioniert das wunderbar.

Die oben erwähnte Klasse publishe ich mit Rainbirds Zyan.
Die Datenübertragung funktioniert auch.
Ich kann auf die Listen zugreifen, Funktion Remote ausführen etc.
Ich hätte jetzt gerne, dass der Server dem Client mittels Event mitteilt, wenn ein neues Element in die Liste eingefügt wurde.

Leider funktioniert das nicht mehr.
Ich kann am Client dem Event kein EventHandler zuweisen.

Client Code:


HttpCustomClientProtocolSetup protocolSetup = new HttpCustomClientProtocolSetup(true);
ZyanConnection connection = new ZyanConnection("http://localhost:10000/Test", protocolSetup);

ITest proxy = connection.CreateProxy<ITest>();

//Diese Zeile funktioniert nicht mehr:
proxy.MyEvent += new EventHandler<EventArgs>(proxy_MyEvent);

Die Ausnahme TargetInvocationException wird geworfen.
Kann mir bitte jemand helfen?

Ich habe auch schon gelesen, dass Events via Remoting nicht geeignet sein sollen.
Gibt es hier eine bessere Möglichkeit dem Client aufmerksam zu machen, dass ein neues Element hinzugefügt wurde?

Ich hoffe ich habe mich klar und verständlich ausgedrückt :)

Vielen Dank
caldi

Thema: Rainbirds Zyan: Mehere Objekte publishen
Am im Forum: Netzwerktechnologien

Hallo,

herzlichen Dank für Deine Hilfe.

Ich werde das gleich nach Deiner Vorlage ausprobieren und Rückmeldung erstatten.

Vielen Dank und viele Grüße
caldi


EDIT:
Danke, jetzt hat's geklappt.
Ich kann leider nicht ganz nachvollziehen, warum es bei mir nicht auf Anhieb ging.

Danke für dein nettes Beispielprojekt :)

caldi

Thema: Rainbirds Zyan: Mehere Objekte publishen
Am im Forum: Netzwerktechnologien

Hi Zusammen,

ich habe ein Problem.
Ich habe nicht sonderlich viel Erfahrung mit Remoting, deswegen hat es mich besonders gefreut eine Klasse zu finden, die das kann: Zyan

Mit einem Objekt, habe ich das auch hingekriegt.

Allerdings möchte ich gerne mehere Objekte damit zur Verfügung stellen.
Und ich habe keine echte Idee wie das funktioniert:


ZyanComponentHost host = new ZyanComponentHost("test", 8080);
host.RegisterComponent<ImyClass, myClass>();

wie kann ich jetzt, ein weiteres Objekt publishen?
Geht das einfach indem ich ein weiteres Component registriere?


host.RegisterComponent<ImyClass2, myClass2>();


Clientseitig habe ich prinzipiell das gleiche Problem:
Das funktioniert noch:


ZyanConnection connection = new ZyanConnection("tcp://localhost:8080/test");
ImyClass proxy = connection.CreateProxy<ImyClass>();

Wie kann ich jetzt ein Proxy für das 2. Objekt machen?
So habe ich es bereits probiert, ohne Erfolg:


ImyClass2 proxy2 = connection.CreateProxy<ImyClass2>();


Ich habe es auch mit 2 Connections probiert, ebenfalls ohne Erfolg.

Kann mir bitte jemand helfen?

Vielen Dank und viele Grüße
caldi

Thema: Remoting-Helfer
Am im Forum: .NET-Komponenten und C#-Snippets

Hi,

also ich habe gerade mein Problem gefunden.
Meine Klasse hieß User und mein Interface entsprechend IUser.
Anscheinend sind das "Schlüsselwörter" für C# und es wird etwas anderes damit verknüpft.
Ich habe die Klasse jetzt neu angelegt und myUser bzw myIUser genannt. Jetzt klappt es.

Eine Frage habe ich noch, die ich auf der Zyan Homepage nicht gefunden habe:
Es steht dort, dass man mehrere Objekte publishen kann.

Allerdings schaff ich das nicht.
Probiert hätte ich das einfach, indem ich noch ein host.registerComponent ausgeführt hätte.
Da bringt er auch keinen Fehler.

Aber ich weiss nicht, wie ich am Client dann 2 proxies verwenden kann.


myIUser userProxy = connection.CreateProxy<myIUser>();
zusätzlich anzugeben funktioniert nicht.

Oder muss ich für jede Componente eine eigene Connection aufbauen?

Hättest Du bitte hier ein kleines CodeSnippet da, indem ich das sehe :)

Vielen Dank für die Hilfe
caldi

Thema: Remoting-Helfer
Am im Forum: .NET-Komponenten und C#-Snippets

Hallo,

ich habe gerade Zyan getestet. Da hat es sofort funktioniert.
Ich weiss nicht woran das liegen könnte.

Vorallem habe ich es anschließend nochmal mit dem RemotingHelper probiert, da hat es dann auch geklappt...

Danke für die Hilfe

Danke
caldi

Thema: Remoting-Helfer
Am im Forum: .NET-Komponenten und C#-Snippets

Danke für Deine schnelle Antwort.

Der Client wirft die Ausnahme.
Port habe ich variiert - von 9400 bis 10000.
Server und Client laufen auf dem selben PC unter dem selben Benutzer, und der ist lokaler Administrator (kein Domänen Admin)

Habe auch schon zum Test, alle Firewalls etc. ausgeschaltet. Leider ohne Erfolg.
An dem .NET Versionsunterschied kann es nicht liegen?
Firewalls habe ich eigtl. auch ausgeschlossen, da ja Dein Projekt ohne Probleme funktioniert.
Dein Projekt basiert auf .NET 2.0, wenn ich das richtig gesehen habe.
Im Moment nutze ich eben wie gesagt 4.0.


Danke für den Link, damit werde ich mich mal näher beschäftigen :)
So groß ist mein Projekt nicht.
Ich versuche eigtl. nur mit Remoting zurecht zu kommen.
Geplant ist 2 Klassen zu publishen, die beide ein static DataSet mit je 2 Tables enthalten.

Ich probiere das Ganze nochmal mit dem Zyan Projekt.
Selbstversändlich gebe ich Rückmeldung, wenn ich Erkenntnisse habe.

Fast vergessen:
Ich nutze Windows 7 Ultimate 64bit

Danke
caldi

Thema: Remoting-Helfer
Am im Forum: .NET-Komponenten und C#-Snippets

Hi,

auch, wenn der Thread schon etwas älter ist, muss ich ihn nochmal ausgraben :)

danke erstmal für Deine Mühen so eine Klasse zu schreiben.
Ich bin ein völliger Remoting Neuling und habe mit Freuden deine Klasse gefunden :)

Leider habe ich Probleme bei der Verwendung.
Derzeit ist Remoting Server und Client der selbe PC. Dieser befindet sich auch in einer Domäne.

RemotingHelper.PublishObjectOverTCP(new myClass(), "test", 9400, true, true);

myClass klasse = (myClass)RemotingHelper.GetRemoteObjectOverTCP(typeof(myClass), "test", "localhost", 9400, true, true);
Zitat von Fehler
Der Zugriff auf einen Socket war aufgrund der Zugriffsrechte des Sockets unzulässig 127.0.0.1:9400

Wenn ich Dein Testprojekt starte funktioniert das einwandfrei.
Ich bin etwas ratlos.

Ich arbeite in VS2010 .net 4.0

Danke für die Hilfe
caldi