1

さて、私はASP.Net Webサイト(C#コードビハインド)に取り組んでおり、トラブルシューティングの理由で(技術サポートを求めるクライアントのほとんどは、使用しているOS/ブラウザ/ブラウザバージョンを知りません)、いわば「システムプロファイル」をログに記録して、OS/ブラウザ関連の問題をより簡単にトラブルシューティングできるようにします。

現在、私は使用してRequest.UserAgentいます。これの問題は、サポート スタッフにとって役に立たない文字列を返すことです。

Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0

私がやりたいことは、OS (Windows NT 6.1、またはユーザーが使用している任意の OS) だけをプルすることです。追加のブラウザー情報を使用せずに、他のシステム情報を既に分離しているためです。

| | ユーザー ID | ユーザーOS | ブラウザの種類 | ブラウザ名 | メジャー バージョン | マイナー バージョン | ベータ版 |

| | 11111 | ユーザーOS* | * Firefox24.0 * | * * Firefox * * |* * * * * 24 * * * * |* * * * 0 * * * * | * * 0 * *|

OSだけを入手することは可能ですか?

クライアント マシン (Windows 7 と Windows NT 6.1 など) から OS フレンドリ名を取得する方法を知っていれば、ボーナス ポイントとして、OS 番号の別のデータベースを作成する必要がなくなります。

4

1 に答える 1

4

ユーザーエージェントはわかりやすい名前を付けないので、リストを維持する必要があります。これに沿った何かが機能するはずです...

        Dictionary<string, string> osList = new Dictionary<string, string>
        {
            {"Windows NT 6.3", "Windows 8.1"},
            {"Windows NT 6.2", "Windows 8"},
            {"Windows NT 6.1", "Windows 7"},
            {"Windows NT 6.0", "Windows Vista"},
            {"Windows NT 5.2", "Windows Server 2003"},
            {"Windows NT 5.1", "Windows XP"},
            {"Windows NT 5.0", "Windows 2000"}
        };

        string userAgentText = HttpContext.Current.Request.UserAgent;

        if (userAgentText != null)
        {
            int startPoint = userAgentText.IndexOf('(') + 1;
            int endPoint = userAgentText.IndexOf(';');

            string osVersion = userAgentText.Substring(startPoint, (endPoint - startPoint));
            string friendlyOsName = osList[osVersion];
        }
于 2013-10-31T22:36:37.100 に答える