1

一度に 1 つのジョブにのみ割り当てることができるモバイル デバイス用のシステムを設計しています。そのため、固有の静的 IP アドレスまたはデバイス ID にアクセスして、どのモバイル デバイスが使用されているかを知る必要があります。入ってくるすべてのマシンに自分で ID を割り当てたくないので、静的 IP がうまく機能します。

ただし、クライアントの IP アドレスを取得しようとすると、ワイヤレス ルーターの IP またはモバイル デバイスの IP ではない他の IP を取得しています。

その IP をテーブルに保存し、割り当てられるジョブを制御したいと考えています。どうすればこれを達成できますか?

次のことを試しましたが、ワイヤレスIPを取得しています:

   var hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    var ip = (
               from addr in hostEntry.AddressList
               where addr.AddressFamily.ToString() == "InterNetwork"
               select addr.ToString()
        ).FirstOrDefault();

より良い代替手段が存在する場合は、Cookie を設定したくありません。

ティア!

4

5 に答える 5

1

ハンドセットを使用して Web ページにアクセスしているため、一意の ID のオプションは (ネイティブのモバイル アプリと比較して) より制限されています。私は過去 13 年間で 100 以上のモバイル (ネイティブ) システムを構築してきましたが、モバイル Web アプリを作成したことがないため、少し「目標を達成できなかった」場合はご容赦ください。

MAC アドレス、GUID、またはハンドセットの IMEI (またはその他の一意の値) のいずれかを探している場合は、JavaScript を使用することから始めるのが合理的なように思えます。このクエリはハンドセットで実行する必要があるため、値は、GET または POST 呼び出しの一部として渡す必要があります。別の方法として、新しい HTML5 がホストへの直接的な「クエリ」機能をサポートしているかどうかを確認できますか?

私があなただったら、IPアドレスはすぐに変わる可能性があるため、IPアドレスには近づかないでしょう(ユーザーはスターバックスに歩いて行き、セルラー経由でサーバーにアクセスし、コーヒーを注文しながらWi-Fiに接続します)、エレベーターを上って電源を入れますオフィスネットワーク。

ただし、Cookie を回避したい場合もありますが、これは依然として有効なアプローチです (一意の値をセッション間で保持する必要がある場合)。また、セッション間で値を維持する必要がない場合は、サーバーの初期応答の一部として GUID / UUID を作成するだけです (ハンドセットからの後続のすべてのセッション呼び出しに含まれます)。Cookie に関連するものには、ユーザーが Cookie を削除するという潜在的な問題があり、要件によっては、クライアントが新しいユーザーとして表示される可能性があります。

最後に、自分で GUID (JavaScript) を作成し、それをリクエストの一部として送信します (明らかに、これはセッション間で保持されません)。

于 2012-07-07T14:08:44.707 に答える
1

あなたの環境をよりよく説明する必要があります。.net コードで IIS を実行しているようです。PHP でクライアントの IP アドレスを取得する場合 (IIS でも PHP を実行している場合)、こちらの回答を使用できます。PHPでクライアントの IP アドレスを取得する方法は? : $_SERVER['HTTP_X_FORWARDED_FOR'] を使用し、$_SERVER['REMOTE_ADDR'] も保存します

.NET のみ (PHP なし) で IIS を実行している場合は、負荷分散環境で IIS サーバー変数のクライアント値を取得する の回答を使用できます: HttpContext.Current.Request.ServerVariables.Item("REMOTE_HOST") および Request.ServerVariables( "X-Forwarded-For")

よろしく

ヨーゼフ

于 2012-07-07T17:03:01.400 に答える
0

このウェブサイトから答えを得ました。

Request.ServerVariables["REMOTE_ADDR"] を上記のサイトの関数に渡し、各マシンを識別するために使用するクライアント コンピューター名を取得しました。IP は変更される可能性がありますが、コンピューター名が変更されることはめったにありません。ご入力いただきありがとうございます。

于 2012-07-09T13:27:33.400 に答える
0

これに使えますGetDeviceUniqueID。見る:

http://blogs.msdn.com/b/windowsmobile/archive/2006/01/09/510997.aspx

... IE モバイル経由で Web リクエストを行うデバイスの一意のデバイス ID を取得しようとしている場合を除きます。

于 2012-07-06T21:03:43.660 に答える
0

MAC アドレスを使用できます。これは、 .Net Compact Frameworkを使用して取得できます。

于 2012-07-06T21:12:30.107 に答える