我有ASP.net网站。我检查了设备是移动的还是不在主页的页面加载中。如果它是移动的,设备路由到移动页面。它有效。但当我从谷歌进入我的网站时,若设备是移动的,并没有路由到移动页面。这里有什么问题?
控制语句:
If Request.Browser.IsMobileDevice Then
Response.Redirect("MobileHomePage.aspx", True)
End If
IsMobileDevice
不是100%可靠的。
这种方法也不是,但你应该有更多的运气使用这个(可能99%可靠?):
Public Shared Function IsMobile() As Boolean
Dim curcontext As HttpContext = HttpContext.Current
Dim user_agent As String = curcontext.Request.ServerVariables("HTTP_USER_AGENT")
user_agent = user_agent.ToLower
' Checks the user-agent
If (Not (user_agent) Is Nothing) Then
' Checks if its a Windows browser but not a Windows Mobile browser
If (user_agent.Contains("windows") AndAlso Not user_agent.Contains("windows ce")) Then
Return False
End If
' Checks if it is a mobile browser
Dim pattern As String = "up.browser|up.link|windows ce|iphone|iemobile|mini|mmp|symbian|midp|wap|phone|pocket|mobile|pda|psp"
Dim mc As MatchCollection = Regex.Matches(user_agent, pattern, RegexOptions.IgnoreCase)
If (mc.Count > 0) Then
Return True
End If
' Checks if the 4 first chars of the user-agent match any of the most popular user-agents
Dim popUA As String = "|acs-|alav|alca|amoi|audi|aste|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|opwv|palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|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|w3c |" & _
"wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda|xda-|"
If popUA.Contains(("|" + (user_agent.Substring(0, 4) + "|"))) Then
Return True
End If
End If
' Checks the accept header for wap.wml or wap.xhtml support
Dim accept As String = curcontext.Request.ServerVariables("HTTP_ACCEPT")
If (Not (accept) Is Nothing) Then
If (accept.Contains("text/vnd.wap.wml") OrElse accept.Contains("application/vnd.wap.xhtml+xml")) Then
Return True
End If
End If
' Checks if it has any mobile HTTP headers
Dim x_wap_profile As String = curcontext.Request.ServerVariables("HTTP_X_WAP_PROFILE")
Dim profile As String = curcontext.Request.ServerVariables("HTTP_PROFILE")
Dim opera As String = curcontext.Request.Headers("HTTP_X_OPERAMINI_PHONE_UA")
If ((Not (x_wap_profile) Is Nothing) OrElse ((Not (profile) Is Nothing) OrElse (Not (opera) Is Nothing))) Then
Return True
End If
Return False
End Function