Überprüfen ob Webservice/Internetverbindung verfügbar (C# Mobile)

Vigi

Grünschnabel
Hey Leuz!

Ich entwickle gerade eine Applikation für Smartphones mit C#, die auf ein Webservice zugreift. Nun habe ich folgende Frage:

Wie kann ich überprüfen ob eine Internetverbindung vorhanden ist, bevor ich auf den Webservice zugreife?
Also so eine Art Ping machen, z.B. auf den Webservice...
Das Problem ist, dass trotz korrekter Fehlerbehandlung die Applikation abstürzt. :mad:

Gibts da fürs Mobile Framework so eine einfache Sache wie beim normalen Framework wie System.Net.NetworkInformation.Ping? Bei :google: habe ich nichts gefunden.

Danke für die Hilfe!
Victor
 

Norbert Eder

Erfahrenes Mitglied
Mit welchem Code testest du aktuell? Ansich sollte die Anwendung nicht abstürzen. Ein normaler Request sollte reichen um eine aktuelle Verbindung festzustellen. Sonst müsstest du über die API gehen.
 

Vigi

Grünschnabel
Habs folgendermassen gemacht:

Das Problem war, wenn ich throw new eingesetzt habe, ging die Fehlermeldung rauf, und rauf, und rauf, bis es weit vom static void Main() hinausschoss und das Programm logischerweise letztendlich abmurkste.
Da wo der WS aufgerufen wird, habe ich alle Fehler im Detail abgefangen (SqlCeException, ThreadAbortException, ...) und zu letzt eine leere Exception Fehlerbehandlung reingepackt.

Code:
catch (Exception)
{
    //
}


Als Beispiel eine kleine Methode die aufgerufen wird, wenn das Senden des Datenblocks an den WS beendet wurde. Hier kann garnicht anderes Falsch sein, ausser das man kein Zugriff auf den WS hat (Webmethode ms.EndUpdateProjectTaskHour(arResult)). Die Methode DeleteTask() hat natürlich ihr eigenes ExceptionHandling.

Code:
public void FinishedSendTask(IAsyncResult arResult)
{
     try
     {
        MobileService ms = ccontroller.C_GetMobileService;
        ProjectTaskHourBase task = (ProjectTaskHourBase)arResult.AsyncState;

        if (ms.EndUpdateProjectTaskHour(arResult))
        {
             this.DeleteTask(task);
        }
    }
    catch (Exception)
    {
        //
    }
}

Diese Applikation lebt sozusagen vom Webservice. Joa... und falls man doch keine Verbindung zum Webservice hat, gibt es noch eine lokale Compact Edition DB. Diese funktioniert auch einwandfrei, sonst wäre man ja verloren... ;)

Ich glaube das Thema ist abgehackt.

Gruss
Victor