萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> asp.net編程 >> asp.net網站首頁根據IP自動跳轉指定頁面的示例

asp.net網站首頁根據IP自動跳轉指定頁面的示例

 本文介紹的程序主要實現根據IP地址或地址段或IP所在城市進行自動跳轉到指定頁面的功能,需要的朋友可以參考下

對於大中型網站,為了增強用戶體驗,往往需要根據不同城市站點的用戶推送或展現相應個性化的內容,如對於一些大型門戶網站的新聞會有城市站點的功能,如果沒有設置相應的城市站點,默認就是根據用戶訪問的IP地址的所在城市自動設置。本文主要通過自定義擴展IHttpModule接口,考慮到性能IP數據庫主要采用QQwry純真IP數據庫,主要實現根據IP地址或地址段或IP所在城市進行自動跳轉到指定頁面的功能(支持Nginx作為前端反向代理服務器),該WebsiteSkip組件核心代碼如下:   代碼如下: using System; using System.Collections.Generic; using System.Text; using System.Web; using System.Xml; using System.IO; using System.Net; using System.Text.RegularExpressions; using NetOpen_System.Component.QQWry;   namespace NetOpen_System.Component {     public sealed class WebsiteSkipHttpModule : IHttpModule     {         #region IHttpModule 成員           public void Dispose()         {         }           public void Init(HttpApplication context)         {             context.BeginRequest += new EventHandler(context_BeginRequest);         }             #endregion             void context_BeginRequest(object sender, EventArgs e)         {             try             {                   //if (HttpContext.Current.Request.IsLocal)//忽略本地計算機請求                 //    return;                   //string ip = HttpContext.Current.Request.UserHostAddress;                 //string ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();                 string ip = string.Empty;                 if (HttpContext.Current.Request.ServerVariables["HTTP_X_REAL_IP"] != null)                 {                     ip = HttpContext.Current.Request.ServerVariables["HTTP_X_REAL_IP"].ToString();                 }                 else if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)                 {                     ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();                 }                 else if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)                 {                     ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();                 }                 else                 {                     ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();                 }                     QQWryLocator qqWry = new QQWryLocator(HttpContext.Current.Server.MapPath(@"~IpDataqqwry.dat"));                   IPLocation ipaddress = qqWry.Query(ip);  //查詢一個IP地址                   string ls_city = ipaddress.Country;                 string ls_urlfrom = string.Empty;                 string ls_urlto = string.Empty;                 string ls_url = HttpContext.Current.Request.Url.AbsoluteUri;                 string ls_useragentkeyword = string.Empty;                   ExcludeUserAgentMatchEngine Em = WebsiteSkipConfiguration.GetConfig().ExcludeUserAgents;                   if(Em.ExcludeUserAgentList.Count > 0)                 {                     foreach (ExcludeUserAgent ua in Em.ExcludeUserAgentList)                     {                         if (HttpContext.Current.Request.UserAgent.Contains(ua.keyword))                         {                             return;                         }                     }                 }                   UrlMatchEngine pu = WebsiteSkipConfiguration.GetConfig().SkipedUrls;                   if (pu.UrlList.Count > 0)                 {                     foreach (SkipedUrl sk in pu.UrlList)                     {                           if (ls_city.Contains(sk.IpCity))                         {                             if (sk.UrlFrom.Length > 0)                             {                                 if (sk.UrlFrom.Contains(ls_url) && !ls_url.Contains(sk.OutKeyWord))                                 {                                     if (sk.UrlTo.Length > 0)                                     {                                         HttpContext.Current.Response.Redirect(sk.UrlTo, true);                                     }                                     break;                                 }                               }                               break;
copyright © 萬盛學電腦網 all rights reserved