0

私がすでに考え出したように。Web サービスをテストするために、IIS で Web サービスを作成したいと考えています。しかし、私の質問は、バインディング タイプを選択する必要があるということです。HTTP、net.tcp ....がありますが、クライアントとの接続はHTTPだけではありません。私の場合、IPアドレス(データベースに保存されている)を使用してクライアントにデータを送信する必要があります。したがって、私の質問は、どのように構成する必要があるかです。サーバー側にもこのコードが含まれています

public void Notify(string ipAddress) //List<string> ipList
    {
        try
        {
            Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

            IPAddress ip = IPAddress.Parse(ipAddress);

            IPEndPoint endPoint = new IPEndPoint(ip, 15000);
            string notification = "new_update";
            byte[] sendBuffer = Encoding.ASCII.GetBytes(notification);
            sock.SendTo(sendBuffer, endPoint);
            sock.Close();
        }
        catch
        {
        }
    }

また、IIS を構成して Web サービスを展開するためのリソースについて、詳細を知りたいです。ありがとうございました!!

4

1 に答える 1

0

Web サービスを展開することは、IIS7 マネージャーで Web サイトを展開することと同じです。このコードは IIS7 で正常に動作しますが、このコードを世界のシナリオで使用すると問題が発生します。クライアントとサーバーの概念からの逸脱 (例: クライアントは同時にサーバーとしても機能します)。Web サービスは、Web メソッド内で次のコードを使用して、クライアントの IP アドレスを取得できます。

string IPAddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
string port = HttpContext.Current.Request.ServerVariables["REMOTE_PORT"];
if (IPAddress == null)
{ 
            IPAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}

ただし、これはクライアントの実際の IP アドレスを提供しません。これは、ネットワーク デバイスと ISP ポリシーによって異なります。したがって、このアプローチに進む前に、設計を再考することをお勧めします。ただし、これはローカルネットワーク内で機能します。

于 2012-06-29T09:02:54.927 に答える