none
WebClient DownloadStringAsync funktioniert nur einmal RRS feed

  • Frage

  • Hi Leute,

    ich übe gerade mit Service / WebClient herum.
    So sieht mein Interface aus, dieses Teil soll auf dem Server laufen:

        [ServiceContract]
        public interface IScoutService
        {
            [OperationContract, WebGet]
            void Login(string username, string uri);
    
            [OperationContract, WebGet]
            void Logout(string username, string uri);
    
            [OperationContract, WebGet]
            void Alert(string username, double breitenGrad, double laengenGrad);
        }
    

    Und hier ist der aufruf vom WP7:

            internal void Alert(double breitenGrad, double laengenGrad)
            {
                //Hardcode for solution - need to be updated in case the REST WCF service address change
                string baseUri = "http://localhost:8000/ScoutService/Alert?username={0}&breitenGrad={1}&laengenGrad={2}";
                string theUri = String.Format(baseUri, "user1", breitenGrad, laengenGrad);
                WebClient client = new WebClient();
                client.DownloadStringCompleted += (s, e) =>
                {
                    if (null == e.Error)
                        UpdateStatus("Alert succeeded");
                    else
                        UpdateStatus("Alert failed: " + e.Error.Message);
                };
                client.DownloadStringAsync(new Uri(theUri));
            }
    

     

    In der Implementation von "void Alert(string username, double breitenGrad, double laengenGrad)" schreibe ich einfach in die Console.
    Das komische nun ist, beim ersten Aufruf funktioniert es perfekt und beim zweiten kommt der Befehl auf dem Server nicht mehr an doch die DownloadStringCompleted meldet das alles gut sei.

    Das ist so mit allen drei Methoden aus dem ServiceContract Interface, jede kann ich nur einmal aufrufen, beim zweiten mal geht nix mehr.
    Hat jemand eine Ahnung was ich falsch mache?

    Gruss razgoolyy

     

     

    Sonntag, 5. Februar 2012 17:28

Antworten

  • Hi,

    da gehören noch ein paar zusätzliche Informationen dazu. Soweit wird man nicht wirklich schlau aus der Beschreibung.

    Was ist dein erklärtes Ziel? Was willst du erreichen. So, wie es es aussieht versuchst du einen WCF Dienst zu bauen, der Daten per GET an den Dienst sendet? Das ist eigentlich nichts, was man heute machen würde.

    Was versuchst du hiermit zu erreichen? Oder ist es lediglich etwas, was du zum Üben probierst?

    Ich würde versuchen einen FIDDLER dazwischen zu schalten, den du kostenlos aus dem Internet laden kannst um zu sehen, ob Daten "über die Leitung" gehen, um zu erfahren, ob der Fehler in deinem Client, oder auf deinem Server liegen.

    Beachte bei Fiddler, dass du nicht ohne weiteres mit "Localhost" arbeiten kannst. Da gibt es weitergehende Informationen, wie es dennoch geht.

    Bevor du das alles aber mit einem Windows Phone machst - schreibe dir doch zusätzlich eine kleine Windows Anwendung, die den Testclient darstellt. Damit eliminierst du eine potentielle Fehlerquelle.

     

    Gruß, Peter


    This posting is provided "AS IS" with no warranties, and confers no rights.
    • Als Antwort markiert razgoolyy Montag, 6. Februar 2012 20:03
    Montag, 6. Februar 2012 08:57
  • Habe den Service nun als Service Reference hinzugefügt, anstatt über den WebClient mit GET zu operieren. Das Problem hat sich somit gelöst.

    Vielen Dank!

    • Als Antwort markiert razgoolyy Montag, 6. Februar 2012 20:02
    Montag, 6. Februar 2012 20:02

Alle Antworten

  • Hi,

    da gehören noch ein paar zusätzliche Informationen dazu. Soweit wird man nicht wirklich schlau aus der Beschreibung.

    Was ist dein erklärtes Ziel? Was willst du erreichen. So, wie es es aussieht versuchst du einen WCF Dienst zu bauen, der Daten per GET an den Dienst sendet? Das ist eigentlich nichts, was man heute machen würde.

    Was versuchst du hiermit zu erreichen? Oder ist es lediglich etwas, was du zum Üben probierst?

    Ich würde versuchen einen FIDDLER dazwischen zu schalten, den du kostenlos aus dem Internet laden kannst um zu sehen, ob Daten "über die Leitung" gehen, um zu erfahren, ob der Fehler in deinem Client, oder auf deinem Server liegen.

    Beachte bei Fiddler, dass du nicht ohne weiteres mit "Localhost" arbeiten kannst. Da gibt es weitergehende Informationen, wie es dennoch geht.

    Bevor du das alles aber mit einem Windows Phone machst - schreibe dir doch zusätzlich eine kleine Windows Anwendung, die den Testclient darstellt. Damit eliminierst du eine potentielle Fehlerquelle.

     

    Gruß, Peter


    This posting is provided "AS IS" with no warranties, and confers no rights.
    • Als Antwort markiert razgoolyy Montag, 6. Februar 2012 20:03
    Montag, 6. Februar 2012 08:57
  • Danke erstmal für Deine Antwort.

    Also mein Ziel ist es derzeit einfach nur die Koordinaten vom Windows Phone an einen Server zu senden. Später soll dann der Server diese Koordinaten an alle Benutzer senden welche eingeloggt sind.
    Ich habe mich an dieses Tutorial gehalten:

    http://channel9.msdn.com/Learn/Courses/WP7TrainingKit/WP7Silverlight/UsingPushNotificationsLab/Exercise-2-Introduction-to-the-Toast-and-Tile-Notifications-for-Alerts

    Daten per GET an den Server zu senden fand ich auch etwas komisch, aber ich habe es mal so gemacht weil ich nicht sicher bin ob das irgendeinen Zusammenhang hat mit dem Notification-Service.
    Oder hat das WCF nichts mit dem Notificationservice zu tun?

    Gruss

    Montag, 6. Februar 2012 12:03
  • Hi,

    WCF hat primär rein garnichts mit WCF Diensten zu tun. Es beschreibt lediglich die Informationsweitergabe von einem Server an einen Microsoft Server, welcher diese Informationen an ein bestimmtes Windows Phone weitergibt. Noch genauer sogar an eine bestimmte Anwendung.

    Von daher - führe mal alle Tutorials durch. Ich habe sie mir aktuell nicht angeschaut, jedoch kann es sein, dass sich das Thema in einem späteren Lab von selbst klärt.


    This posting is provided "AS IS" with no warranties, and confers no rights.
    Montag, 6. Februar 2012 12:10
  • Habe den Service nun als Service Reference hinzugefügt, anstatt über den WebClient mit GET zu operieren. Das Problem hat sich somit gelöst.

    Vielen Dank!

    • Als Antwort markiert razgoolyy Montag, 6. Februar 2012 20:02
    Montag, 6. Februar 2012 20:02