.NET Compact Framework でのネットワーク プログラミング
[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 空白のトピックは、プレースホルダーとして挿入されています。]
.NET Compact Framework には組み込みサポート XML Web サービスし、次のプロトコルのサポートおよび機能が提供されます用意されています。
HTTP ベースのプロトコル。
NTLM 認証します。
SOAP エンコード済み XML コンテンツ。 このサポートには、ADO.NET データセットを渡すことが含まれます。
HTTP の SOAP メッセージを送信して応答 SOAP メッセージを受信できる Web 要求および応答の Web メソッド。
SOAP ライブラリとシリアル化でき、XML SOAP メッセージの送受信にメソッドの呼び出しと任意のオブジェクト逆シリアル化するメソッドです。
HTTP 要求
次の項目は HTTP 要求の送受信に関連します。
エミュレーターを使用する場合 localhost サーバー名の使用しないでください。 コンピュータ名または Web サービスをホスト開発用コンピューターの IP アドレスを指定します。
デバイスと同様に、エミュレーターには独自の IP アドレスがあります。 自体を使用して、開発環境または別のデスクトップ コンピューターによってホストされる Web サービスではなく、Web サービスに接続するには、エミュレーターを指示 localhost を使用します。
次の例は適切ではありません。
https://localhost/myWebService/Service1.asmx
次を指定します。
http://ComputerName/myWebService/Service1.asmx
HttpWebRequest を使用して HTTP 要求を行う場合 1 が使用できない場合、デバイスが新しいネットワーク接続を開始します。 したがって、HTTP 要求の接続が利用可能なかどうかのみ判断を行うことがありますデバイスを接続、たとえば GPRS 接続を開始しようとしています。
.NET Compact Framework GlobalProxySelection.Select/プロパティには、プロキシ情報を格納しませんは使用このプロパティの HTTP 接続コード内で値を指定する場合。
インターネットに接続するには、ローカルのプロキシ設定を指定あります。 次のコードは、ポート 80 のプロキシの設定を示しています。
System.Net.GlobalProxySelection.Select = new WebProxy("http://myproxy:80");
AllowWriteStreamBuffering false を設定するデータがメモリ内バッファーいないされはサポートしませんでも認証要求のリダイレクト、Web サーバーによって。
正常な操作を確保するには、絶対パス情報を指定してください。
相対ファイルの仕様の解決の次の Windows CE 動作注意してください。
file://myfile \\myfile と解釈されます。
file:///myfile \myfile ルート ディレクトリとして解決です。
それは、既知の問題、.NET Framework Dns.GetHostName メソッドは現在コンピューターにインストールされている 50 以上のネットワーク プロトコルがある場合に、例外をスローします。
この問題を回避する、するにが実際に必要でないネットワーク プロトコルをアンインストールします。 こうには 1 つの方法は Windows デバイス マネージャーを使用して使用されていないネットワーク アダプターを削除します。 別の方法のプロトコルがインストールされているアプリケーションをアンインストールします。
モバイル通信のセキュリティ保護します。
2 つのプリンシパルのセキュリティで保護されたモバイル通信手段があります。
HTTP 認証
.NET Compact Framework は基本認証およびダイジェスト認証をサポートします。 これらの認証メカニズムは単純ですであり、セキュリティとのトレードオフもかなり呼びます – 1、Web サービス、HTTP バインドに制限が。
NTLM または既存の基本認証またはダイジェスト認証に任意のコードの変更は必要ありません (「Windows 統合認証」)、Kerberos を実行するサーバーをサポートする .NET Framework Version 2. 0 のコンパクトします。
カスタムのセキュリティ ヘッダー
.NET Compact Framework は現在サポートしていません (WS-Security) Web サービスのセキュリティと Web サービス拡張機能 (WSE)。
さらに、HTTP またはカスタム ヘッダーを使用して、認証するかどうか SSL を使用してセキュリティを強化することができます。 基本認証、名とパスワード送信クリア テキストでため SSL 内から実行しない限り、特に安全ではありません。 ただしで SSL と組み合わせて使用すると、比較的安全です、資格情報をターゲット サーバーを誤って公開される、重要な問題。
Note The .NET Compact Framework does not support client-side authentication using X509 certificates.
コンテンツの長さに関する考慮事項
POST プロトコルを使用してストリームのコンテンツの HTTP Web 要求を送信するときはコンテンツ長さを指定する必要があります。 SendChunked は falseMethod と仮定すると、POST を = ContentLength の値を指定します。
完全な .NET Framework とは異なり、.NET Compact Framework はメモリ制約に関する考慮事項に対応するデータを prebuffer しません。 バッファリングを SendChunkedfalse を設定します。
コンテンツの長さは 0 を持つ要求ストリームが取得され正しく閉じていない場合、ObjectDisposedException とします。 長さ-0-コンテンツ要求を処理するには、GetRequestStream メソッドを明示的に呼び出すし Close メソッドを呼び出して、返されるストリームに対して、 Write メソッドを呼び出さずに次のコード例で示すよう必要があります。
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