Netzwerkprogrammierung in .NET Compact Framework

Dieser Dokumentation für die Vorschau nur ist und in späteren Versionen geändert. Leere Themen wurden als Platzhalter eingefügt.]

.NET Compact Framework bietet integrierte Unterstützung für XML-Webdienste und unterstützt die folgenden Protokolle und Funktionen:

  • HTTP-basierte Protokolle.

  • NTLM-Authentifizierung.

  • SOAP-codierten XML-Inhalt. Diese Unterstützung umfasst übergeben von ADO.NET-Datasets.

  • Methoden für Webanforderungen und Webantworten, die HTTP SOAP-Nachrichten senden und SOAP-Meldungen als Antwort empfangen können.

  • SOAP Bibliotheken und Methoden, die serialisieren und Deserialisieren Methodenaufrufe und beliebige Objekte in und aus XML SOAP-Nachrichten können.

HTTP-Anforderungen

Die folgenden Elemente beziehen sich auf Senden und Empfangen von HTTP-Anforderungen:

  • Wenn Sie den Emulator zu verwenden, verwenden Sie nicht Localhost für den Namen des Servers auf. Geben Sie den Computername oder die IP-Adresse des Entwicklungscomputer, die den Webdienst hostet.

    Der Emulator, wie ein Gerät verfügt über eigene IP-Adresse. Localhost weist den Emulator selbst verwenden, um-Webdienst statt mit dem Web-Dienst von der Entwicklungsumgebung oder einem anderen Desktopcomputer zu verbinden.

    Statt nach den folgenden:

    https://localhost/myWebService/Service1.asmx

    Geben Sie Folgendes an:

    http://ComputerName/myWebService/Service1.asmx

  • Wenn HTTP-Anforderung mit HttpWebRequest vornehmen, initiiert das Gerät eine neue Netzwerkverbindung, wenn eine nicht verfügbar ist. Daher kann Herstellen einer HTTP-Anforderung an nur ermitteln, ob eine Verbindung verfügbar ist das Gerät versucht, eine Verbindung, beispielsweise eine GPRS-Verbindung initiieren.

  • .NET Compact Framework speichert keine Proxydaten in GlobalProxySelection.Select-Eigenschaft, aber es diese Eigenschaft für HTTP-Verbindungen verwenden, wenn Sie einen Wert im Code angeben.

  • Um mit dem Internet zu verbinden, müssen Sie möglicherweise Ihre lokalen Proxyeinstellungen festlegen. Der folgende Code zeigt den Proxy für Port 80 festlegen:

    System.Net.GlobalProxySelection.Select = new WebProxy("http://myproxy:80");
    
  • Wenn Sie auf AllowWriteStreamBufferingfalse festlegen, werden die Daten werden nicht im Arbeitsspeicher gepuffert und unterstützt keine Authentifizierungsanforderungen oder Umleitungen durch den Webserver.

  • Um erfolgreich zu gewährleisten, geben Sie absolute Pfadinformationen an.

    Beachten Sie das folgende Windows CE-Verhalten beim Auflösen relativer Dateispezifikationen:

    file://myfile wird als \\myfile aufgelöst.

    file:///myfile wird als \myfile im Stammverzeichnis aufgelöst.

  • Es ist ein bekanntes Problem, das die .NET Framework Dns.GetHostName-Methode eine Ausnahme, auslöst Wenn mehr als 50 Netzwerkprotokolle auf dem aktuellen Computer installiert sind.

    Um dieses Problem zu umgehen, deinstallieren Sie die Netzwerkprotokolle, die nicht tatsächlich benötigt werden. Eine Möglichkeit ist die Verwendung Windows Geräte-Manager, um nicht verwendete Netzwerkadapter zu entfernen. Eine andere Möglichkeit besteht darin Anwendungen deinstallieren, die Protokolle installiert haben.

Sichere Mobile Kommunikation

Es gibt zwei principal Möglichkeiten für die sichere mobile Kommunikation:

  • HTTP-Authentifizierung

    Der .NET Compact Framework unterstützt Basis-und Digestauthentifizierung. Authentifizierungsmechanismen sind einfach und Ihre Sicherheit und die vor-und Nachteile sind ziemlich gut bekannt – eine, dass der Webdienst auf einem HTTP-Bindung beschränkt ist.

    .NET compact Framework, Version 2.0, unterstützt Server mit NTLM oder Kerberos ("integrierte Windows-Authentifizierung"), die keine benötigt Codeänderungen auf vorhandene Standard- oder Digestauthentifizierung Authentifizierung.

  • Benutzerdefinierte Security-Header

    Web Services Security (WS-Security) und Web Service Enhancements (WSE) werden von .NET Framework derzeit nicht unterstützt.

    Darüber hinaus, ob Sie eine über HTTP oder einen benutzerdefinierten Header Authentifizierung, können SSL Sie zum Erhöhen der Sicherheit. Standardauthentifizierung übergibt Name und Kennwort in Klartext, daher ist es nicht besonders sicher, sofern in SSL ausgeführt werden. Es ist jedoch bei Verwendung in Verbindung mit SSL relativ sichere, mit der einzig bedeutsame Problem Anmeldeinformationen an den Zielserver wird unbeabsichtigtes anzeigen.

Note   The .NET Compact Framework does not support client-side authentication using X509 certificates.

Content Length Überlegungen

Wenn Sie eine HTTP-Anforderung per Streaming übertragene Inhalte, die mit dem POST-Protokoll zu senden, müssen Sie eine Inhaltslänge angeben. SendChunked false Method ist vorausgesetzt = POST, geben Sie einen Wert für ContentLength.

Anders als im vollständigen .NET Framework .NET Compact Framework nicht Daten, die Vorüberlegungen zum Speicher Einschränkung prebuffer. Um sicherzustellen, Pufferung, legen Sie SendChunked auf false.

Ein Anforderungsstream mit NULL Inhaltslänge bewirkt, dass ein ObjectDisposedException, wenn nicht abgerufen und ordnungsgemäß geschlossen wurde. NULL-Content-Length-Anforderungen, müssen Sie die GetRequestStream -Methode explizit aufrufen und dann die Close -Methode aufrufen im zurückgegebenen Stream ohne Aufrufen der Write-Methode wie im folgenden Codebeispiel wird dargestellt.

private static void ZeroLengthRequest()
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(
        requestUri + "?dummy=true");
    request.AllowWriteStreamBuffering = true;
    request.Credentials = CredentialCache.DefaultNetworkCredentials;
    request.Credentials = netCred;
    request.ConnectionGroupName = "mygroup";
    request.ContentLength = 0;
    request.KeepAlive = true;
    request.Method = "POST";
    request.ServicePoint.UseNagleAlgorithm = false;
    request.Timeout = System.Threading.Timeout.Infinite;
    request.UnsafeAuthenticatedConnectionSharing = true;
    Stream req = request.GetRequestStream();
    req.Close();
    using (request.GetResponse())
    {
        ...
    }
}
Private Shared Sub ZeroLengthRequest()
        Dim request As HttpWebRequest = _
           CType(WebRequest.Create(requestUri + "?dummy=true"), _
           HttpWebRequest)
        request.AllowWriteStreamBuffering = true
        request.Credentials = CredentialCache.DefaultNetworkCredentials
        request.Credentials = netCred
        request.ConnectionGroupName = "mygroup"
        request.ContentLength = 0
        request.KeepAlive = true
        request.Method = "POST"
        request.ServicePoint.UseNagleAlgorithm = false
        request.Timeout = System.Threading.Timeout.Infinite
        request.UnsafeAuthenticatedConnectionSharing = true
        Dim req As Stream = request.GetRequestStream
        req.Close
        request.GetResponse
End Sub

Siehe auch

Weitere Ressourcen

Netzwerke und Konnektivität in .NET Compact Framework