Zum Inhalt springen

C# Service Problem mit Objektinstanz und Objektverweis


Shiggy

Empfohlene Beiträge

Hallo liebe community,

ich habe folgendes Problem. wenn ich folgenden Code ausführe kommt der Fehler "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt". Ich weiß nicht wie ich dieses Problem lösen kann.

Der Fehler tritt auf bei:

SVC.User user = new SVC.User();

                    user.UserName = loginTxtBoxUName.Text.ToString();
 private void Connect()

        {

            if (proxy == null)

            {

                try

                {

                    this.localClient = new SVC.Client();

                    SVC.User user = new SVC.User();

                    user.UserName = loginTxtBoxUName.Text.ToString();

                    this.localClient.User = user;

                    this.localClient.AvatarID = loginComboBoxImgs.SelectedIndex;

                    InstanceContext context = new InstanceContext(this);

                    proxy = new SVC.ChatClient(context);


                    //As the address in the configuration file is set to localhost

                    //we want to change it so we can call a service in internal 

                    //network, or over internet

                    string servicePath = proxy.Endpoint.ListenUri.AbsolutePath;

                    string serviceListenPort = proxy.Endpoint.Address.Uri.Port.ToString();


                    proxy.Endpoint.Address = new EndpointAddress("net.tcp://" + loginTxtBoxIP.Text.ToString() + ":" + serviceListenPort + servicePath);



                    proxy.Open();


                    proxy.InnerDuplexChannel.Faulted += new EventHandler(InnerDuplexChannel_Faulted);

                    proxy.InnerDuplexChannel.Opened += new EventHandler(InnerDuplexChannel_Opened);

                    proxy.InnerDuplexChannel.Closed += new EventHandler(InnerDuplexChannel_Closed);

                    proxy.ConnectAsync(this.localClient);

                    proxy.ConnectCompleted += new EventHandler<ConnectCompletedEventArgs>(proxy_ConnectCompleted);

                }

                catch (Exception ex)

                {

                    loginTxtBoxUName.Text = ex.Message.ToString();

                    loginLabelStatus.Content = "Offline";

                    loginButtonConnect.IsEnabled = true;

                }

            }

            else

            {

                HandleProxy();

            }

        }
Meine Klassen im Hintergrund sehen wie folgt aus: (Client dem der User hinzugefügt werden soll UND der User selbst)
[System.Diagnostics.DebuggerStepThroughAttribute()]

    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]

    [System.Runtime.Serialization.DataContractAttribute(Name = "User", Namespace = "http://schemas.datacontract.org/2004/07/ServiceAssembly")]

    [System.SerializableAttribute()]

    public partial class User : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged

    {


        [System.NonSerializedAttribute()]

        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;


        [System.Runtime.Serialization.OptionalFieldAttribute()]

        private String UserNameField;


        [System.Runtime.Serialization.OptionalFieldAttribute()]

        private String PasswordField;


        [System.Runtime.Serialization.OptionalFieldAttribute()]

        private Person PersonField;


        [global::System.ComponentModel.BrowsableAttribute(false)]

        public System.Runtime.Serialization.ExtensionDataObject ExtensionData

        {

            get

            {

                return this.extensionDataField;

            }

            set

            {

                this.extensionDataField = value;

            }

        }


        [System.Runtime.Serialization.DataMemberAttribute()]

        public Person Person

        {

            get

            {

                return this.PersonField;

            }

            set

            {

                if ((this.PersonField.Equals(value) != true))

                {

                    this.PersonField = value;

                    this.RaisePropertyChanged("Person");

                }

            }

        }


        [System.Runtime.Serialization.DataMemberAttribute()]

        public String UserName

        {

            get

            {

                return this.UserNameField;

            }

            set

            {

                if ((this.UserNameField.Equals(value) != true))

                {

                    this.UserNameField = value;

                    this.RaisePropertyChanged("UserName");

                }

            }

        }


        [System.Runtime.Serialization.DataMemberAttribute()]

        public String Password

        {

            get

            {

                return this.PasswordField;

            }

            set

            {

                if ((this.PasswordField.Equals(value) != true))

                {

                    this.PasswordField = value;

                    this.RaisePropertyChanged("Password");

                }

            }

        }


        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;


        protected void RaisePropertyChanged(string propertyName)

        {

            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

            if ((propertyChanged != null))

            {

                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

            }

        }

    }


    [System.Diagnostics.DebuggerStepThroughAttribute()]

    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]

    [System.Runtime.Serialization.DataContractAttribute(Name="Client", Namespace="http://schemas.datacontract.org/2004/07/ServiceAssembly")]

    [System.SerializableAttribute()]

    public partial class Client : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged 

    {


        [System.NonSerializedAttribute()]

        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;


        [System.Runtime.Serialization.OptionalFieldAttribute()]

        private int AvatarIDField;


        [System.Runtime.Serialization.OptionalFieldAttribute()]

        private string NameField;


        [System.Runtime.Serialization.OptionalFieldAttribute()]

        private SVC.User UserField;


        [System.Runtime.Serialization.OptionalFieldAttribute()]

        private System.DateTime TimeField;


        [global::System.ComponentModel.BrowsableAttribute(false)]

        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {

            get {

                return this.extensionDataField;

            }

            set {

                this.extensionDataField = value;

            }

        }


        [System.Runtime.Serialization.DataMemberAttribute()]

        public SVC.User User

        {

            get

            {

                return this.UserField;

            }

            set

            {

                if ((this.UserField.Equals(value) != true))

                {

                    this.UserField = value;

                    this.RaisePropertyChanged("User");

                }

            }

        }


        [System.Runtime.Serialization.DataMemberAttribute()]

        public int AvatarID {

            get {

                return this.AvatarIDField;

            }

            set {

                if ((this.AvatarIDField.Equals(value) != true)) {

                    this.AvatarIDField = value;

                    this.RaisePropertyChanged("AvatarID");

                }

            }

        }


        [System.Runtime.Serialization.DataMemberAttribute()]

        public string Name

        {

            get

            {

                return this.NameField;

            }

            set

            {

                if ((object.ReferenceEquals(this.NameField, value) != true))

                {

                    this.NameField = value;

                    this.RaisePropertyChanged("Name");

                }

            }

        }


        [System.Runtime.Serialization.DataMemberAttribute()]

        public System.DateTime Time {

            get {

                return this.TimeField;

            }

            set {

                if ((this.TimeField.Equals(value) != true)) {

                    this.TimeField = value;

                    this.RaisePropertyChanged("Time");

                }

            }

        }


        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;


        protected void RaisePropertyChanged(string propertyName) {

            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

            if ((propertyChanged != null)) {

                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

            }

        }

    }

Über Hilfe freue ich mich sehr :)

Greetz Shiggy

Link zu diesem Kommentar
Auf anderen Seiten teilen

private void buttonConnect_Click(object sender, RoutedEventArgs e)

        {

            loginButtonConnect.IsEnabled = false;

            loginLabelStatus.Content = "Connecting..";

            proxy = null;

            Connect();


        }

Hier innerhalb des Clickereignisses wird die Connect-Methode aufgerufen. Sobald man also auf den knopf drückt soll sich der client mit dem service verbinden. dabei soll er die informationen aus dem eingabefeld übernehmen und später sobald ich soweit bin dann in der datenbank nachschaun ob denn der nutzer schon existiert. die ganze zeit hat es auch ohne db funktioniert weil ich das nur auf die namen abgefragt habe.

seit ich aber den User in den Client mit eingehängt habe funktioniert das ganze nichtmehr da er probleme hat die instanz des Users dem Client hinzuzufügen.

Bearbeitet von Shiggy
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hura,

ich habe mein Problem entdeckt.

das Problem war dass er an dieser Stelle


[System.Runtime.Serialization.DataMemberAttribute()]

        public SVC.User User

        {

            get

            {

                return this.UserField;

            }

            set

            {

                if ((this.UserField.Equals(value) != true))

                {

                    this.UserField = value;

                    this.RaisePropertyChanged("User");

                }

            }

        }

ein problem hatte im setter zu überprüfen ob der aktuelle User im Client null ist.

nachdem ich dies auskommentiert hatte hat es funktioniert.

:)

Greetz Shiggy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...