Laden...

Forenbeiträge von Runshak Ingesamt 71 Beiträge

31.07.2015 - 09:55 Uhr

das Problem von el_vital ist mir auch schon aufgefallen...allerdings ist die Verzögerung nicht so krass wie sie el_vital beschreibt...bei mir dauert es nur länger, wenn ich in visual studio ein wpf projekt compiliere...eine ausführbare datei mit wpf startet kaum verzögert

14.07.2015 - 14:58 Uhr

wusste nicht dass das ne rolle spielt...aber das was Palladin007 vorgeschlagen hat funktioniert

14.07.2015 - 14:49 Uhr

Ich hab ne C++ Dll eingebunden...und eine der Methoden besitzt 7 Parameter vom Typ String und Long...umgewandelt in String und Int32...aber sie besitzt halt auch noch einen Long* parameter...und das muss ich mit ref machen damit es funktioniert...jedenfalls meinte das der Kollege, der die DLL zusammengebastelt hat...

werde das von @palladin007 mal versuchen...danke 😃

14.07.2015 - 10:10 Uhr

hallo

ich bin über die Suche auf ein Thema gestoßen, welches mir eine Antwort gibt, zu dem Problem das ich habe...

Fehlermeldung:
error CS0206: Eine Eigenschaft, ein Indexer oder ein dynamischer Memberzugriff kann nicht als out- oder ref-Parameter übergeben werden.

und herbivore hat dazu folgendes geschrieben...

Wenn man eine Property an eine Methode übergeben will, die einen ref-Parameter erwartet, müsste man also den Wert der Property in einer Variablen speichern, diese per ref übergeben und den geänderten Wert anschließend in die Property zurückschreiben.

Meine Frage...wie setze ich das denn um?

13.07.2015 - 13:11 Uhr

schonmal was von Watson gehört?

Wiki_Link_zu_Watson

Es gibt meines Wissens nach auch eine Schnittstelle für Entwickler zum Testen...

und einem Computer Sprache beizubringen oder was ein Auto ist läuft ähnlich ab wie bei einem Kind...

26.06.2015 - 09:11 Uhr

Wobei Blackhat und Who am i in dieser Hinsicht sehr gut umgesetzt waren...vorallem in who am i war das Social-Engineering super umgesetzt

25.06.2015 - 13:56 Uhr

ok, danke...dann werd ich mir da was anderes überlegen

25.06.2015 - 09:26 Uhr

hallo,

ich würde gerne von meinem Client aus den FolderBrowserDialog beim Server starten und den geöffneten Dialog nicht beim Server anzeigen sondern beim Client...bisher bekomme ich lediglich beim Server den Dialog angezeigt...aber ich muss vom Client aus nen Pfad auswählen können...ist das irgendwie möglich?

Methode im Server

 string folderName;                  
                 FolderBrowserDialog dialogP = new FolderBrowserDialog();
                 DialogResult result = dialogP.ShowDialog();                 
                 folderName = dialogP.SelectedPath;
                 return folderName.ToString();  

das ist mein Vertrag

 [OperationContract(AsyncPattern = true)]
        IAsyncResult BeginPfadwaehlen(AsyncCallback callback, object asyncState);
        CdatenVertrag EndPfadwaehlen(IAsyncResult result);

und hier starte ich den Aufruf (im Client)

string rmAddres = null;
                rmAddres = "net.tcp://" + IpAddress + ":" + PortNumber + "/IvertragAsynchron";
               
                NetTcpBinding nettcpbinding = new NetTcpBinding(SecurityMode.None); 
                ChannelFactory<IvertragAsynchron> chFactory = new ChannelFactory<IvertragAsynchron>(nettcpbinding);
                nettcpbinding.MaxReceivedMessageSize = 10485760; TimeSpan mSpan = default(TimeSpan);
                mSpan = new TimeSpan(1200000000);
                nettcpbinding.SendTimeout = mSpan;
                EndpointAddress epAddress = new EndpointAddress(rmAddres);
                objProxy = chFactory.CreateChannel(epAddress);
                this.PfadContent = "Anfrage läuft...";
                if (objProxy.Ping())
                {
                    objProxy.BeginPfadwaehlen(asyncResult =>
                    {
                        this.PfadContent = objProxy.EndPfadwaehlen(asyncResult).Content;
                    }, null);
}
15.06.2015 - 11:28 Uhr

Hallo,

ich habe folgendes Problem...

Zwei Anwendungen einmal WPF einmal Konsole der Code ist copy/paste 1:1 identisch...

beim WPF funktioniert es einwandfrei bei der Konsole nicht...in beiden Fällen ist das Framework 4.0 und x86 eingestellt...importiert wird eine C++ Dll

public static class DLLCaller
   {
       [DllImport("CallSkalaFkt.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
       private static extern Int32 CallSkalaFkt_SkalaStart(Int32 _hWnd, string _DB_Path, string _GLOB_GUID, string _RG_PATH, Int32 _EE_ID, Int32 _EE_Par, Int32 new_Ring, Int32 _auto_Start, ref Int32 Status_Flag);

       public static string Call()
       {
           System.Threading.Thread.Sleep(1000);

           string _DB_Path = "D:\\Projekte\\Skala_Simu\\Simu\\Glob_Simu.mdb";
           string _GLOB_GUID = "{guid{5ACB1481-2692-4C66-8BBC-9CC8B9FDF0C2}}";
           string _RG_PATH = "D:\\Projekte\\Skala_Simu\\Simu\\";

           Int32 _hWnd = 0;
           Int32 _EE_ID = 1;
           Int32 _EE_Par = 0;
           Int32 new_Ring = 1;
           Int32 _auto_Start = 0;
           Int32 Status_Flag = 0;

           GCHandle m_gch = GCHandle.Alloc(Status_Flag, GCHandleType.Pinned);

           try
           {
               int tmp = CallSkalaFkt_SkalaStart(_hWnd, _DB_Path, _GLOB_GUID, _RG_PATH, _EE_ID, _EE_Par, new_Ring, _auto_Start, ref Status_Flag);
               m_gch.Free();
               return tmp.ToString();
           }
           catch (Exception ex)
           {
               return ex.Message;
           }
       }
   }

Der Fehler taucht auf, wenn das Programm in die erste Zeile des Try-Blocks springt...von dort gehts direkt in den Catch-Block ...Ergebnis ist> Fehlermeldung:

Eine externe Komponente hat eine Ausnahme ausgelöst ...Errorcode ist 0x80004005 E_FAIL => Unspecified error

gibt es noch andere Einstellungen auf die man achten sollte, beim Import einer DLL?

achso ich sollte noch hinzufügen, dass der selbe Fehler in einem neu erstellten WPF ebenfalls auftritt

22.05.2015 - 14:27 Uhr

Hallo,

ich mein WCF-Projekt hat jetzt eine DLL bekommen und in dieser DLL (c++) befindet sich ein long* Pointer. Das Einbinden ohne diesen funktioniert einwandfrei mit ihm erhalte ich eine CallbackException...Deswegen mein Gedanke, dass beim Ausführen der DLL-Funktion die Rückgabe nicht mehr zurück kommt, da mein Service nur in eine Richtung läuft...also würde ich ein Callback einbauen...das habe ich auch gemacht und bekomme jetzt folgende Fehlermeldung beim Aufruf meines Services...

 using (ServiceHost sh = new ServiceHost(typeof(Cservice)))

sobald diese Codezeile erreicht wird spuckt der Compiler folgenden Text aus...

Fehlermeldung:
InvalidOperationException: Mit "IsOneWay=true" gekennzeichnete Vorgänge müssen keine Ausgabeparameter, als Verweis zu übergebende Parameter oder Rückgabewerte deklarieren.

Mein asynchroner Vertrag lautet:

using System;
using System.ServiceModel;

namespace Vertrag
{
    [ServiceContract(Name = "VertragAsy", SessionMode= SessionMode.Allowed, CallbackContract=typeof(IcallbackContract))]
    public interface IvertragAsynchron
    {
            [OperationContract(AsyncPattern= true, IsOneWay=true)]
            IAsyncResult BeginDoIt(AsyncCallback callback, object asyncState);
            CdatenVertrag EndDoIt(IAsyncResult result);

            [OperationContract(AsyncPattern = false)]
            bool Ping();
    }
}

mein Callbackvertrag lautet:

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;

namespace Vertrag
{
    [ServiceContract]
    public interface IcallbackContract
    {
        [OperationContract(IsOneWay=true)]
        CdatenVertrag DoIt();      

        [OperationContract()]
        bool Ping();         
    }
}

Wie ich den Callback jetzt aber noch dem Client richtig mitteile steig ich nicht durch...das Buch, welches mir helfen soll, ist da recht dürftig mit Informationen

28.04.2015 - 11:19 Uhr

der Vollständigkeit halber, hier noch meine Lösung die ich damals gefunden hatte...

 FileInfo fi = new FileInfo(Application.ExecutablePath); // Pfad von .txt-Datei im Debug-Verzeichnis vom Server
                    string path;
                    path= fi.DirectoryName + "\\Portnummer.txt";
                    string portnummer; 
                    portnummer = File.ReadAllText(path);   
28.04.2015 - 11:07 Uhr

Hallo, ich habe endlich eine schöne Videoplaylist auf Youtube gefunden zum lernen von C#. Das ganze sind Videos aus Vorlesungen an einer Uni.

Der Prof. nutzt in einem seiner Videos die Möglichkeit Bezeichner zu wählen, die schon reserviert sind. Bsp. "String" er setzt dafür vor den Bezeichner das "@"... ist das überhaupt sinnvoll? bzw. wird das von "Profis" häufig verwendet?

[edit]

String @string = ...

so heißt jetzt das Ding string und kann verwendet werden...ist das sinnvoll?

27.04.2015 - 10:12 Uhr

das sind ja die aktuellen Kennungen, gibts dann für die Sowjetunion einfach die Kennung des heutigen Russlands?

27.04.2015 - 09:12 Uhr

das hatte ich schon so verstanden... den Link hatte ich voll übersehen -.-

ich würde dir da helfen, ein paar weitere Fahrzeuge einzutragen ... vllt auch nach Land sortiert... bin aber diese Woche viel unterwegs... ginge also erst in ca 7-10 Tagen

24.04.2015 - 15:23 Uhr

ok, dann habe ich jetzt verstanden wie du dir das ganze vorstellst... falls dennoch korrekte Daten zu Geschwindigkeit etc gewünscht werden, kann ich weiter helfen...

24.04.2015 - 15:02 Uhr

das heißt der Benutzer soll die Werte festlegen und nicht der Entwickler?

24.04.2015 - 13:51 Uhr

sind das 2.WK Einheiten oder heute Einheiten? Wenns um 2.WK geht könnte ich dir mit den Eigenschaften vllt. helfen, da ich eine umfassende Bibliothek an Werken darüber habe...bei modernen Einheiten kann ich dir nur bei Panzern helfen

23.01.2015 - 15:56 Uhr

Danke, mal sehn, ob ich damit was anfangen kann

23.01.2015 - 15:50 Uhr

Hallo

ich habe in folgendem Beitrag [FAQ] Pfad zur eigenen Anwendung (EXE) ermitteln

was gefunden und in mein Prog. eingebaut...


 string portnummer;
 portnummer = File.ReadAllText(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location + "Portnummer.txt"));

Aber dann bekomme ich den Fehler, dass das nicht möglich sei, weil der Debug-Ordner schreibgeschützt ist...

Achtung: Aus dem Verzeichnis der EXE sollte nur gelesen, aber nicht dorthin geschrieben werden. Seit Windows Vista sind die Standardeinstellungen ohnehin so, dass ein Schreiben in Programmverzeichnise nicht möglich ist. Welches Verzeichnis stattdessen zum Schreiben verwendet werden sollte, hängt von der Art der Daten (temporäre Dateien, Konfigurationsdaten, Anwendungsdaten, Benutzerdaten ...) ab.

aber ich möchte ja eigentlich nur lesen...

gibt es da eine andere Möglichkeit oder eine Alternative?

10.12.2014 - 13:44 Uhr

das ganze ist self hosted und asynchron

10.12.2014 - 12:05 Uhr

Hallo,

ich hab nun endlich WCF etwas besser verstanden und meine kleine Anwendung soweit benutzbar gemacht.

Da hier in der Firma noch ein paar ältere Server mit Windows Server 2003 rumstehen, sollte mein Programm auch unter Framework 4.0 laufen, was ich inzwischen hinbekommen habe...leider funktioniert mein Programm nur in eine Richtung...

Server läuft auf Win7, Client auf WinServer2003: da schließt sich mein Client einfach irgendwann... vertausch ich Server und Client läuft es perfekt. Ich hab jetzt in mein Programm im Client die MaxReceivedMessageSize mal auf 10MB gesetzt und das Timeout kommt jetzt erst nach 2Minuten...das bringt mir aber nur was, wenn ich Server/Client jeweils unter Win7 laufen lasse oder auf dem WinServer2003 nur den Server...Der Client schließt sich dennoch...

hat WinServer2003 irgendwelche Beschränkungen, die einen Timeout unter 15 Sekunden setzen bzw die MaxReceivedMessageSize extrem niedrig halten? Weil wenn ich meine zu übertragenden Daten klein halte (ein String gefüllt mit Primzahlen) läuft der Client auch unter WinServer2003 problemlos...

Wäre dankbar wenn jemand nen Tipp hätte oder das Problem kennt bzw. ähnliche Erfahrungen gemacht hat

05.12.2014 - 14:44 Uhr

schon was mit WPF oder WCF gemacht?

27.10.2014 - 12:14 Uhr

man könnte auch eine Facebookgruppe/ICQ (falls das noch jemand kennt 😄 )/Skype/Whatsapp schreiben...Interesse hätte ich auch...Mit persönlich könnte es schwer werden...bin in Böblingen 😄

15.10.2014 - 13:19 Uhr

Mit WPF geht sowas, einfach die ComboBox hinzufügen...dann ist sie leer und hat nur den Pfeil...du kannst dann entweder Dinge hinzufügen oder sie Manuell beschreiben...bei Forms kann ich es dir nicht sagen

09.10.2014 - 15:36 Uhr

vielleicht interessiert sich jemand dafür: BadUSB: Wenn USB-Geräte böse werden

Wer die Firmware eines USB-Sticks kontrolliert, kann den zu einem perfekten Trojaner umfunktionieren. Deutsche Forscher zeigen, dass das komplett via Software möglich ist und sich damit ganz neue Infektions-Szenarien eröffnen.

Das neue ist, dass solche Angriffe mittlerweile nicht nur Theorie sind, sondern auch in der Wildbahn vorkommen können.

09.10.2014 - 13:03 Uhr

Wie ihr vllt wisst, habe ich ein Program mit WCF und basicHttpBinding...ich glaube auch, dass ich alle Tipps/Vorschläge von @Abt umsetzen habe können bzw halbwegs verstanden habe...

Das Program läuft allerdings synchron...ich würde es aber gerne asynchron laufen lassen...jetzt habe ich Vorgehensweise: Asynchrones Aufrufen von Vorgängen mit einer Kanalfactory gefunden (siehe Überschrift) ...allerdings tun sich hierbei eine Menge Fragen auf, die ihr vllt beantworten könnt...

Dienstvertrag:

  [OperationContract(AsyncPattern = true)]
    IAsyncResult BeginMultiply(double n1, double n2, AsyncCallback callback, object state);
    double EndMultiply(IAsyncResult ar);

Das BeginMultiply und das EndMultiply muss ich ja beides "füllen"...

in einer anderen Klasse, die von dem Interface mit dem Dienstvertrag erbt muss ich ja diese beiden Methoden behandeln...ich habe bei mir eine Funktion, die Primzahlen berechnet...diese Funktion habe ich in die BeginMultiply-Methode gepackt...und was muss in der EndMultiply-Methode stehen?

und dann gibt es noch

static void AddCallback(IAsyncResult ar)
{
    double result = ((CalculatorClient)ar.AsyncState).EndAdd(ar);
    Console.WriteLine("Add Result: {0}", result);
}

...kommt das zum Client oder zum Server?

Wenn jemand mir das Erklären könnte, vllt auch ein Beispiel hätte, oder einfach nur Tipps... ich wäre euch wirklich dankbar

09.10.2014 - 10:34 Uhr

Interessant wäre es bestimmt 😉

Du könntest es ja dann mit WPF und WCF aufbauen...

07.10.2014 - 12:19 Uhr

Ich denke Mega ist sicherer als Dropbox (außer man verschlüsselt es extra) und der Hintergrund der Verschlüsselung bei Mega war der, dass der Betreiber selbst nicht die Daten seiner Kunden kontrolieren kann...und somit nicht haftbar ist, wenn diese Filme oder ähnliches aus geschützten Quellen teilen (siehe kinox.to etc)...und Kim Dotcom wollte es dem FBI o.ä. Behörden das Leben schwer machen, da diese ihn für megaupload haftbar machen wollten...

zurück zum Thema... Von Google würde ich abraten aufgrund der Sammelwut von Google und Skydrive kontrolliert was hochgeladen wird...sprich sie schauen auch deine Bilder an...

Ich hab ne eigene Cloud aufgesetzt (raspberryPi mit ner externen Festplatte) ...Zugriff über OwnCloud ...zugriff vom Smartphone und Pc Problemlos...Einzige Schwierigkeit...Wenn der Router Einstellungen nicht zulässt damit man von außen darauf zugreifen kann...

Dropbox ist denke ich vorallem für Studenten praktisch... Ich hab mitlerweile knapp 30 gb freien Speicher (das Spacerace hat da 20gb beigesteuert...Jede Uni kann teilnehmen...je mehr Studenten einer Uni sich registrieren mit ihrer Hochschulmailadresse...desto mehr freien Speicher bekommt man geschenkt...)

07.10.2014 - 09:20 Uhr

Telekom-Cloud

vllt ist das was für dich? ...oder Mega-Cloud

Mega ist glaub mit 50gb kostenlosem Speicher am günstigsten...und recht schnell...und da der "Erfinder" von Mega (Kim Dotcom) daran interessiert ist, dass Behörden nicht in seiner Cloud schnüffeln ist sie auch recht gut verschlüsselt...

29.09.2014 - 15:00 Uhr

sorry hatte es falsch in Erinnerung...im Bonusteil gibts noch ein Kapitel mit XML

29.09.2014 - 13:05 Uhr

vom Hanser Verlag gibt es das Buch C# Grundlagen und Profiwissen...in dem eBook davon (kostenlos bei der Printausgabe dabei) gibt es noch Zusatzkapitel zu Win Phone

Visual C# 2012 - Grundlagen und Profiwissen

12.09.2014 - 16:08 Uhr

so sieht es mMn eleganter aus, als wenn man jedesmal ein neues Fenster aufpoppen lässt

12.09.2014 - 14:17 Uhr

@ Lando ...du hast recht -.- [edit] Der Fehler taucht trotzdem noch auf...habs wieder vererbt...

@ Abt
Danke für deine Mühe...und auch danke für dein Beispielprogramm...leider verstehe ich noch nicht alles in deinem Bsp. deswegen ist es mir noch nicht möglich es korrekt selbst umzusetzen...aber ich wollte genau in diesem Projekt es Stück für Stück ändern...so dass ich es endlich verstehe...aber das ist eben nur möglich wenn das, was ich bisher selbst gemacht habe auch läuft...

...das mit dem Port öffnen stammt aus einem Tutorial...danke, werde es korrigieren...

du hast in deinem Beispielcode

ChannelFactory<ICalcService> chFactory = new ChannelFactory<ICalcService>( tcpb );

verwendet...ich versteh dabei nur "Bahnhof"...wenn ich das in meinem "Versuchsprojekt" ebenfalls implementiert habe, bekam ich die Meldung, dass irgendeine Sicherheitsebene nicht befugt ist oder so...damit konnte ich nichts anfangen...und die Dokumentation von Microsoft ist in meinen Augen teilweise etwas arg karg und kurz gehalten bzw hat merkwürdigen Beispielcode...ich hab jetzt schon zwei bücher vor mir liegen und sie auch so weit gelesen...aber immer an der entscheidenden Stelle wird das Kapitel beendet...die Beispiele darin sind jedes mal mit dem app.config gemacht und nicht so wie in deinem Beispiel ohne...und ich finde es wirklich nett und ausgesprochen hilfreich, dass du mir extra ein Beispielcode geschrieben hast, aber mir fehlt auf diese Art eben das Verständnis...weil abschreiben kann ich es...klar...aber ich muss es ja auch verstehen um dann selbst was zu programmieren...

12.09.2014 - 13:51 Uhr

Service...

<Window x:Class="WPFServerUndClient.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Server" Height="255" Width="710">
    <Window.Resources>
        <ImageBrush x:Key="blue"    ImageSource="Properties/ultra.jpg" />
        <ImageBrush x:Key="technik" ImageSource="Properties/tech.jpg" />
    </Window.Resources>

    <Grid Background="{StaticResource blue}">

        <Menu Height="25"
              VerticalAlignment="Top">

            <MenuItem Header="Datei">
                <MenuItem Command="New" 
                          Header="Neu..."
                         />
                <Separator/>
                <MenuItem Click="OnBeenden" Header="Beenden"/>
            </MenuItem>
        </Menu>
        <TextBox Margin="305,76,185,114"
                 Height="35"
                 FontWeight="Medium"
                 FontSize="16"/>
        <TextBox Margin="525,76,30,114"
                 FontWeight="Medium"
                 FontSize="16"/>
        <TextBox Margin="27,126,30,21"
                 Name="TxtBoxServer"/>
        <Label Foreground="Red"
               Margin="305,45,185,138">Server Ip-Adresse
        </Label>
        <Label Foreground="Red"
               Margin="525,45,30,138">Server Portnummer

        </Label>
        <Label Background="{StaticResource technik}" 
               Margin="27,45,443,114"/>



    </Grid>
</Window>

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WPFServerUndClient
{
    /// <summary>
    /// Interaktionslogik für MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            using (ServiceHost sh = new ServiceHost(typeof(HelloService)))
            {
                sh.Open();                                  // Port wird geöffnet
                TxtBoxServer.Text = "Service ist bereit";

            }

        }

        private void OnBeenden(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;

namespace WPFServerUndClient
{
    [ServiceContract]
    interface IHelloService
    {
        [OperationContract]
        string DoIt();
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WPFServerUndClient
{
    class HelloService
    {
         #region IHelloService Member

        public string DoIt()
        {
            return "Hallo Windows Communication Foundation";
        }
    }

        #endregion
    
}

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehaviorMeta">
          <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:2121/HelloService/meta"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="ServiceBehaviorMeta" name="WPFServerUndClient.HelloService">
        <endpoint address="http://localhost:2121/HelloService" binding="basicHttpBinding"
          bindingConfiguration="" name="HelloServiceHttpendpoint" contract="WPFServerUndClient.IHelloService" />
      </service>
    </services>
  </system.serviceModel>
</configuration>

wobei der Fehler eigentlich im Servicebereich liegen sollte...da beim Debuggen man gar nicht weiter kommt...

Client

<Window x:Class="Client.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Client" Height="255" Width="710">
    <Window.Resources>
        <ImageBrush x:Key="blue"    ImageSource="Properties/ultra.jpg" />
        <ImageBrush x:Key="technik" ImageSource="Properties/tech.jpg" />
    </Window.Resources>

    <Grid Background="{StaticResource blue}">

        <Menu Height="25"
              VerticalAlignment="Top">

            <MenuItem Header="Datei">
                <MenuItem Command="New" 
                          Header="Neu..."
                         />
                <Separator/>
                <MenuItem Click="OnBeenden" Header="Beenden"/>
            </MenuItem>
        </Menu>
        <TextBox Margin="305,76,185,114"
                 Height="35"
                 FontWeight="Medium"
                 FontSize="16"/>
        <TextBox Margin="525,76,30,114"
                 FontWeight="Medium"
                 FontSize="16"/>
        <TextBox    Name="TxtBoxClient"
                    Margin="27,126,185,21"/>
        <Label Foreground="Red"
               Margin="305,45,185,138">Server Ip-Adresse
        </Label>
        <Label Foreground="Red"
               Margin="525,45,30,138">Server Portnummer

        </Label>
        <Label Background="{StaticResource technik}" 
               Margin="27,45,443,114"/>

        <Button Margin="525,126,30,57"
                Background="White"
                Name="btnStarten"
                Click="OnClick"
                > Client starten
            
        </Button>

    </Grid>
</Window>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ServiceModel;

namespace Client
{
   
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            //HelloServiceClient hsc = new HelloServiceClient();

            //TxtBoxClient.Text = hsc.DoIt();
            //hsc.Close();
        }
        public void OnClick(object sender, RoutedEventArgs e)
        {
            String epName = "HelloServiceHttpendpoint";
            String rmAddres = "http://localhost:2121/HelloService";

            try 
            {

                HelloServiceClient hsc = new HelloServiceClient(epName, rmAddres);

                epName = hsc.DoIt();
                 hsc.Close();

	        } 
            
            catch (Exception ex) 
            {

                modAllgemein.AddLastErr(ref ex);
        	}
        }
        private void OnBeenden(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

    }
}

// Proxy

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ServiceModel.ServiceContractAttribute(ConfigurationName = "IHelloService")]
public interface IHelloService
{

    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHelloService/DoIt", ReplyAction = "http://tempuri.org/IHelloService/DoItResponse")]
    string DoIt();

    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHelloService/DoIt", ReplyAction = "http://tempuri.org/IHelloService/DoItResponse")]
    System.Threading.Tasks.Task<string> DoItAsync();
}

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
public interface IHelloServiceChannel : IHelloService, System.ServiceModel.IClientChannel
{
}

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
public partial class HelloServiceClient : System.ServiceModel.ClientBase<IHelloService>, IHelloService
{

    public HelloServiceClient()
    {
    }

    public HelloServiceClient(string endpointConfigurationName) :
        base(endpointConfigurationName)
    {
    }

    public HelloServiceClient(string endpointConfigurationName, string remoteAddress) :
        base(endpointConfigurationName, remoteAddress)
    {
    }

    public HelloServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
        base(endpointConfigurationName, remoteAddress)
    {
    }

    public HelloServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
        base(binding, remoteAddress)
    {
    }

    public string DoIt()
    {
        return base.Channel.DoIt();
    }

    public System.Threading.Tasks.Task<string> DoItAsync()
    {
        return base.Channel.DoItAsync();
    }
}

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="HelloServiceHttpendpoint" />
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint  binding="basicHttpBinding" address="http://localhost:2121/HelloService"
          bindingConfiguration="HelloServiceHttpendpoint" contract="IHelloService"
          name="HelloServiceHttpendpoint" />
    </client>
  </system.serviceModel>
</configuration>


using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Windows;

namespace Client
{

    static class modAllgemein
    {

         public static void AddErr(ref Exception mEx)
        {
        //string strD = null;
        //string strT = null;

           MessageBox.Show(mEx.Source + "\r\n" + mEx.StackTrace);


         }



         public static void AddLastErr(ref Exception mEx)
        {
        //string strD = null;
        //string strT = null;

            MessageBox.Show(mEx.Source + "\r\n" + mEx.StackTrace);


        }

    }
}
12.09.2014 - 13:40 Uhr

das hab ich dieses mal alles berücksichtigt!

12.09.2014 - 13:34 Uhr

hm...es wird bei meinem wpf Projekt eine "XamlParseException" geworfen...es ist aber 1:1 der selbe Code wie bei der Consolenanwendung...halt optisch "aufgehübscht"

Fehlermeldung:
Zeilennummer "3" und Zeilenposition "9" von "Durch den Aufruf des Konstruktors für Typ "WPFServerUndClient.MainWindow", der den angegebenen Bindungseinschränkungen entspricht, wurde eine Ausnahme ausgelöst."

in den Details steht dann:

Fehlermeldung:
Der Vertragsname &quot;WPFServerUndClient.IHelloService&quot; wurde nicht in der Liste von Verträgen gefunden, die vom Dienst &quot;HelloService&quot; implementiert wurden.

das tut er aber...sobald ich den Service über die Console laufen lasse verschwindet die Meldung wieder...und ich hab am Code dabei nichts geändert...nur copy/paste gemacht...deswegen bin ich verunsichert bzw verwundert warum es nicht funktioniert

12.09.2014 - 13:24 Uhr

Hallo,

ich hab ne Verständnisfrage für folgendes Problem...

Eine einfache Consolenanwendung mit WCF realisiert...zwei Projekte in einer Mappe (Client und Server)

Das Serverprojekt bietet nen Service und das Clientprojekt greift darauf zu...funktioniert...der Client holt sich eine Message vom Service ab...läuft auch übers Netzwerk (2 Rechner)...

Jetzt wollte ich das ganze etwas aufhübschen und hab beiden Projekten ne WPF-Oberfläche verpasst...nun gut...lief nicht...keine Fehlermeldung die irgendwie weitergeholfen hätte...nur irgendwas mit nem Contract würde nicht stimmen...

Hab dann das Serverprojekt als Consolenanwendung gebastelt und das Clientprojekt als WPFanwendung...jetzt läuft es...

Ist es irgendwie möglich den Service über ne WPFanwendung zum laufen zu bringen??? oder läuft das nur mit Console?

09.09.2014 - 10:47 Uhr

was passiert wenn du das alte icon löschst?

04.09.2014 - 17:00 Uhr

mit der antwort bin ich auf diese simple lösung nicht gekommen...da ich bis vor wenigen minuten davon ausgegangen war, dass alles in der client.exe gespeichert wird...

04.09.2014 - 16:47 Uhr

habe das problem ganz simpel gelöst...und nein es lag nicht am namespace, nicht an svcutil und dergleichen...ich hab nur nicht dran gedacht, dass die config-infos nicht in der .exe gespeichert werden...und dass man die config.exe dem client mitgeben muss...jetzt läufts...trotzdem danke für die mühe...

04.09.2014 - 12:40 Uhr

Die Rechner sind alle im selben Netzwerk in der selben Workgroup...ich hatte immer den Server gestartet und erst dann den Client auf dem anderen Pc

[edit] Anpingen ist kein Problem, Firewall ist an beiden Rechnern ausgeschaltet gewesen

04.09.2014 - 10:53 Uhr

kann es vllt auch an meinem netzwerk liegen?

ich habe folgendes Tutorial ebenfalls gemacht:

WCF - Tutorial 1

es funktioniert auch prima mit localhost (wie mein projekt auch) aber wenn ich es mit ner ip von nem anderen pc versuche (wie im Tutorial beschrieben)

"Falls ihr euren Host von einem anderen Computer aus starten wollt um euer Programm auf Netzwerkfähigkeit zu testen müsst ihr nur in der App.config vom Client die neue IP eintragen. Diese ist im Tag endpoint unter address zu finden. Dort einfach Localhost mit der gewünschten IP austauschen." -Zitat aus dem Tutorial

funktioniert es ebenfalls nicht...und ich bekomme die Fehlermeldung die hier schon gepostet wurde...

04.09.2014 - 09:18 Uhr

Ich hab das ganze als tutorial angefangen...das tutorial war nicht das einzige welches ich mir angeschaut habe...aber sie waren alle mit localhost...und das was ich hier habe stammt aus dem letzten tutorial naja eher aus nem buch welches ich mir extra gekauft habe...wenn es in diesem Buch so steht gehe ich davon aus, dass das stimmt und nicht falsch ist...anscheinend lag ich da falsch

und nein ich will mein Problem nicht auf andere abwältzen...ich versteh nur nicht was an meinem code falsch sein könnte...da ich die angaben zum namespace aus einem Buch habe...

...aber ich bin trotzdem dankbar für deine mühe...auch wenn du nicht sehr begeisterst klingst...

[edit] und wenn der namespace falsch sei...warum funktioniert es dann lokal??...das dürfte ja dann schon da nicht richtig funktionieren...oder?

03.09.2014 - 16:19 Uhr

name löschen hat keine auswirkung auf mein problem

03.09.2014 - 15:31 Uhr

ich hab keine ahnung was daran falsch sein könnte...

Ich hab das NetTcpBinding ausgewählt, da es meiner Meinung nach zu dem passt, was ich realisieren möchte...

Eine sichere und optimierte Bindung, die sich für die computerübergreifende Kommunikation zwischen WCF-Anwendungen eignet.

das passt doch so oder etwa nicht?

und in IHelloService ist doch der contract definiert...oder muss ich dann dort andere Attribute setzen??...

Ich versteh wirklich nicht was ich mir zum Thema Binding auf der verlinkten Seite noch anschauen soll?!...

Das Binding braucht ja nur zwei Dinge...Protokoll und wie wird codiert...und NetTcpBinding codiert Binär und TCP als Protokoll hat es auch...also sind doch die wichtigsten Dinge erledigt...jedenfalls für mein Verständnis...

vllt kannst du mir das was du mir sagen willst (mit dem contract und dem binding), näher erleutern...ich versteh beim besten Willen nicht was ich damit anfangen soll...

03.09.2014 - 14:08 Uhr

die umfrage ist nur an entwickler gerichtet oder?

03.09.2014 - 14:06 Uhr

also gut...der fehler von s.o. ist behoben... (nur der Fehler, welcher in der Console steht, besteht noch)

ich poste jetzt meinen kompletten code und hoffe, dass mir irgendjemand hier helfen kann...

Der Client soll auf nem anderen PC laufen und auf meinen zugreifen und sich dort vom Service ne Nachricht abholen...
mit localhost funktioniert es...

Service

using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    namespace TCPBinding
    {
    class HelloService : IHelloService
    {
    #region IHelloService Member
    public string DoIt()
    {
    return "Hallo WCF-User";
    }
    #endregion
    }
    }
using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.ServiceModel;
    using System.Text;
    using System.Threading.Tasks;
    namespace TCPBinding
    {
    [ServiceContract]
    interface IHelloService
    {
    [OperationContract]
    string DoIt();
    }
    }
using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.ServiceModel;
    using System.Text;
    using System.Threading.Tasks;
    namespace TCPBinding
    {
    class Program
    {
    static void Main(string[] args)
    {
    using (ServiceHost sh = new ServiceHost(typeof(HelloService)))
    {
    sh.Open();
    Console.WriteLine("Service bereit...");
    Console.ReadLine();
    }
    }
    }
    }


    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <system.serviceModel>
    <behaviors>
    <serviceBehaviors>
    <behavior name="ServiceBehaviorMeta">
    <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:2321/HelloService/meta" />
    </behavior>
    </serviceBehaviors>
    </behaviors>
    <services>
    <service behaviorConfiguration="ServiceBehaviorMeta" name="TCPBinding.HelloService">
    <endpoint address="net.tcp://[ip von meinem pc]:2121/HelloService" binding="netTcpBinding"
    bindingConfiguration="" name="HalloServiceTCPEndpoint" contract="TCPBinding.IHelloService" />
    </service>
    </services>
    </system.serviceModel>
    </configuration>

jetzt zum Client...

mit svcutil erzeugte Proxy-Klasse

    //------------------------------------------------------------------------------
    // <auto-generated>
    // Dieser Code wurde von einem Tool generiert.
    // Laufzeitversion:4.0.30319.18444
    //
    // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
    // der Code erneut generiert wird.
    // </auto-generated>
    //------------------------------------------------------------------------------
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    [System.ServiceModel.ServiceContractAttribute(ConfigurationName="IHelloService")]
    public interface IHelloService
    {
    [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHelloService/DoIt", ReplyAction="http://tempuri.org/IHelloService/DoItResponse")]
    string DoIt();
    [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHelloService/DoIt", ReplyAction="http://tempuri.org/IHelloService/DoItResponse")]
    System.Threading.Tasks.Task<string> DoItAsync();
    }
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public interface IHelloServiceChannel : IHelloService, System.ServiceModel.IClientChannel
    {
    }
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public partial class HelloServiceClient : System.ServiceModel.ClientBase<IHelloService>, IHelloService
    {
    public HelloServiceClient()
    {
    }
    public HelloServiceClient(string endpointConfigurationName) :
    base(endpointConfigurationName)
    {
    }
    public HelloServiceClient(string endpointConfigurationName, string remoteAddress) :
    base(endpointConfigurationName, remoteAddress)
    {
    }
    public HelloServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
    base(endpointConfigurationName, remoteAddress)
    {
    }
    public HelloServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
    base(binding, remoteAddress)
    {
    }
    public string DoIt()
    {
    return base.Channel.DoIt();
    }
    public System.Threading.Tasks.Task<string> DoItAsync()
    {
    return base.Channel.DoItAsync();
    }
    }

  using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.ServiceModel;
    namespace TCPBindingClient
    {
    class Program
    {
    static void Main(string[] args)
    {
    HelloServiceClient hsc = new HelloServiceClient();
    Console.WriteLine(hsc.DoIt());
    hsc.Close();
    Console.ReadLine();
    }
    }
    }

ebenfalls mit svcutil erzeugte app.config

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
    <system.serviceModel>
    <bindings>
    <netTcpBinding>
    <binding name="HalloServiceTCPEndpoint" />
    </netTcpBinding>
    </bindings>
    <client>
    <endpoint address="net.tcp://[ip von meinem pc]:2121/HelloService" binding="netTcpBinding"
    bindingConfiguration="HalloServiceTCPEndpoint" contract="IHelloService"
    name="HalloServiceTCPEndpoint">
    <identity>
    <userPrincipalName value="MM\Musterle" />
    </identity>
    </endpoint>
    </client>
    </system.serviceModel>
    </configuration>

Ich hoffe ihr könnt damit alle was anfangen...
das meiste das ich im Netz gefunden habe ist mit localhost (was ja bei mir problemlos funktioniert)
oder nicht problemspezifisch...

Mein Gedanke war, dass ich beim Client in der app.config die Ip austausche durch die des anderen PCs...brachte aber ebenfalls nichts...

-Was überseh ich, dass es nicht wie gewünscht läuft?
-fehlt mir noch was grundlegendes?
-muss ich bei der Konfiguration noch was dazu schreiben, damit es funktioniert?

...die Firewall an meinem PC war während des Tests ausgeschaltet

02.09.2014 - 15:34 Uhr

ok 😃
das ist ne gute antwort...und die argumente sind wohl nicht zu überbieten 😉 wollte nur mal wissen wie die meinung so ist...bzw wissen ob überhaupt interesse besteht

02.09.2014 - 15:28 Uhr

ich kann euch gern mal alles hier rein hauen...

mein Problem ist halt, dass ich nicht vestehe warum es nicht funktioniert...wenn ich die ip von meinem pc drin stehen habe und den server und auch den client lokal laufen lasse funktioniert es...wenn ich den client jetzt auf nen anderen pc packe und dort laufen lasse kommt der fehler...was muss ich ändern? (firewall war beim test aus)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="ServiceBehaviorMeta">
                    <serviceMetadata httpGetEnabled="true" httpGetUrl="http://10.202.4.128:2121/HelloService/meta" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <services>
            <service behaviorConfiguration="ServiceBehaviorMeta" name="HalloWCF_Service.HelloService">
                <endpoint address="http://10.202.4.128:2121/HelloService" binding="basicHttpBinding"
                    bindingConfiguration="" name="HelloServiceHttpendpoint" contract="HalloWCF_Service.IHelloService" />
            </service>
        </services>
    </system.serviceModel>
</configuration>

das ist die app.config vom server...muss ich dann das Binding vllt zu einem TCP-Binding ändern damit es so geht wie ich es gemacht habe mit der ip-Adresse? (bei httpGetUrl= ...)