用户手机客户端登录Login页面跳转到手机MobileLogin页面问题总结

来源:互联网 发布:java io 装饰器模式 编辑:程序博客网 时间:2024/04/24 18:06

     最近的一个项目中要实现区别手机移动客户端还是PC客户端,然后让手机客户端的用户跳转到MobileLogin页面。遇到了一个问题,我反复测试、调试、修改终于就出这个问题的原因。具体问题是这样的:

            Login.aspx页面是这样的:有一个连接<a class ="a04" id = "a04"  href = "<%=os ?MobileLogin.aspx:'#'%>"></a> 

            后台代码定义了一个静态全局变量:public static bool os = ISWAPBroser(); ;

                    protected void Page_Load(object sender, EventArgs e)
                 {


                                         string userAgent = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"];
                                        

                                其他略。。。。。

                    }

  #region
        /// <summary>  
        /// 获取客户端是是否手机  
        /// </summary>  
        /// <returns></returns>  
        public  bool ISWAPBroser()
        {
            //UserAgent   
            string  userAgent = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"];
              
          String[] mobileAgents = {"iphone", "android", "phone", "mobile", "wap", "netfront",
                                      "java", "opera mobi", "opera mini", "ucweb", "windows ce", 
                                      "symbian", "series", "webos", "sony", "blackberry", "dopod", 
                                      "nokia", "samsung", "palmsource", "xda", "pieplus", "meizu", 
                                      "midp", "cldc", "motorola", "foma", "docomo", "up.browser", 
                                      "up.link", "blazer", "helio", "hosin", "huawei", "novarra",
                                      "coolpad", "webos", "techfaith", "palmsource", "alcatel", 
                                      "amoi", "ktouch", "nexian", "ericsson", "philips", "sagem",
                                      "wellcom", "bunjalloo", "maui", "smartphone", "iemobile",  
                                      "spice", "bird", "zte-", "longcos", "pantech", "gionee", "portalmmm",
                                      "jig browser", "hiptop", "benq", "haier", "^lct", "320x320", "240x320",
                                      "176x220", "w3c ", "acs-", "alav", "alca", "amoi", "audi", "avan", "benq",
                                      "bird", "blac", "blaz", "brew", "cell", "cldc", "cmd-", "dang", "doco",
                                      "eric", "hipt", "inno", "ipaq", "java", "jigs", "kddi", "keji", "leno",
                                      "lg-c", "lg-d", "lg-g", "lge-", "maui", "maxo", "midp", "mits", "mmef",
                                      "mobi", "mot-", "moto", "mwbp", "nec-", "newt", "noki", "oper", "palm",
                                      "pana", "pant", "phil", "play", "port", "prox", "qwap", "sage", "sams", 
                                      "sany", "sch-", "sec-", "send", "seri", "sgh-", "shar", "sie-", "siem", 
                                      "smal", "smar", "sony", "sph-", "symb", "t-mo", "teli", "tim-", "tosh",
                                      "tsm-", "upg1", "upsi", "vk-v", "voda", "wap-", "wapa", "wapi", "wapp", 
                                      "wapr", "webc", "winw", "winw", "xda", "xda-", "Googlebot-Mobile"};
        bool  isMoblie = false;
          
         string userAgent1 = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"];
        
         if (userAgent1 != null)
           {
             for(int i=0;i<mobileAgents.Length;i++)
              {
                  if (userAgent1.ToLower().IndexOf(mobileAgents[i]) >= 0)
               {
                isMoblie = true;
                break;
             }
            }
          }
          return isMoblie;
         }
        #endregion 


这样写的目的是想在页面加载之前确定链接地址。但是我却忽略了一个问题,就是我此时获得userAgent 是空的,所以ISWAPBroser()返回的值一直是false,找到最终原因,所以解决的办法就有了。如下:

protected void Page_Load(object sender, EventArgs e)
        {


            string userAgent = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"];
            bool os = ISWAPBroser();
        }

0 0
原创粉丝点击