ASP.NET Request相關操作

來源:互聯網
上載者:User

using System;
using System.Web;
using System.Text;

namespace Pub.Class
{
    /// <summary>
    /// Requests操作類
    /// </summary>
    public class Request2 {
        #region Get/GetInt/GetFloat
        /// <summary>
        /// 接收傳值
        /// </summary>
        /// <param name="VarName">參數名稱</param>
        /// <returns>參數對應的值</returns>
        static public String Get(String VarName)
        {
            string varValue = "";
            if (HttpContext.Current.Request[VarName]!=null)
                varValue = HttpContext.Current.Request[VarName].ToString();
            return varValue;
        }
        /// <summary>
        /// GetInt
        /// </summary>
        /// <param name="varName"></param>
        /// <param name="defValue"></param>
        /// <returns></returns>
        static public int GetInt(string varName, int defValue) { return Get(varName).ToInt(defValue); }
        /// <summary>
        /// GetFloat
        /// </summary>
        /// <param name="varName"></param>
        /// <param name="defValue"></param>
        /// <returns></returns>
        static public float GetFloat(string varName, int defValue) { return Get(varName).ToFloat(defValue); }
        #endregion

        #region GetQ/GetQInt/GetQFloat
        /// <summary>
        /// 取URL上的參數
        /// </summary>
        /// <param name="VarName">參數名</param>
        /// <returns>返回參數</returns>
        static public String GetQ(String VarName)
        {
            string varValue = "";
            if (HttpContext.Current.Request.QueryString[VarName] != null)
                varValue = HttpContext.Current.Request.QueryString[VarName].ToString();
            return varValue;
        }
        /// <summary>
        /// GetQInt
        /// </summary>
        /// <param name="varName"></param>
        /// <param name="defValue"></param>
        /// <returns></returns>
        static public int GetQInt(string varName, int defValue) { return GetQ(varName).ToInt(defValue); }
        /// <summary>
        /// GetQFloat
        /// </summary>
        /// <param name="varName"></param>
        /// <param name="defValue"></param>
        /// <returns></returns>
        static public float GetQFloat(string varName, int defValue) { return GetQ(varName).ToFloat(defValue); }
        #endregion

        #region GetF/GetFInt/GetFFloat
        /// <summary>
        /// 取POST提交的資料
        /// </summary>
        /// <param name="VarName">名稱</param>
        /// <returns>傳回值</returns>
        static public String GetF(String VarName)
        {
            string varValue = "";
            if (HttpContext.Current.Request.Form[VarName]!=null)
                varValue = HttpContext.Current.Request.Form[VarName].ToString();
            return varValue;
        }
        /// <summary>
        /// GetFInt
        /// </summary>
        /// <param name="varName"></param>
        /// <param name="defValue"></param>
        /// <returns></returns>
        static public int GetFInt(string varName, int defValue) { return GetF(varName).ToInt(defValue); }
        /// <summary>
        /// GetFFloat
        /// </summary>
        /// <param name="varName"></param>
        /// <param name="defValue"></param>
        /// <returns></returns>
        static public float GetFFloat(string varName, int defValue) { return GetF(varName).ToFloat(defValue); }
        #endregion

        #region IsPost/IsGet
        /// <summary>
  /// 判斷當前頁面是否接收到了Post請求
  /// </summary>
  /// <returns>是否接收到了Post請求</returns>
  public static bool IsPost()
  {
   return HttpContext.Current.Request.HttpMethod.Equals("POST");
  }
  /// <summary>
  /// 判斷當前頁面是否接收到了Get請求
  /// </summary>
  /// <returns>是否接收到了Get請求</returns>
  public static bool IsGet()
  {
   return HttpContext.Current.Request.HttpMethod.Equals("GET");
        }
        #endregion

        #region 伺服器變數名
        /// <summary>
  /// 返回指定的伺服器變數資訊
        ///
  /// </summary>
  /// <param name="strName">伺服器變數名</param>
  /// <returns>伺服器變數資訊</returns>
  public static string GetServerString(string strName)
  {
   if (HttpContext.Current.Request.ServerVariables[strName] == null)
    return "";
   return HttpContext.Current.Request.ServerVariables[strName].ToString();
        }
        #endregion

        #region GetRawUrl/IsBrowserGet/IsSearchEnginesGet/GetPageName/GetQParamCount/GetFParamCount/GetParamCount/
        /// <summary>
  /// 擷取當前請求的原始 URL(URL 中域資訊之後的部分,包括查詢字串(如果存在))
  /// </summary>
  /// <returns>原始 URL</returns>
  public static string GetRawUrl()
  {
   return HttpContext.Current.Request.RawUrl;
  }
        /// <summary>
  /// 判斷當前訪問是否來自瀏覽器軟體
  /// </summary>
  /// <returns>當前訪問是否來自瀏覽器軟體</returns>
  public static bool IsBrowserGet()
  {
   string[] BrowserName = {"ie", "opera", "netscape", "mozilla", "konqueror", "firefox"};
   string curBrowser = HttpContext.Current.Request.Browser.Type.ToLower();
   for (int i = 0; i < BrowserName.Length; i++) {
    if (curBrowser.IndexOf(BrowserName[i]) >= 0) return true;
   }
   return false;
  }
  /// <summary>
  /// 判斷是否來自搜尋引擎連結
  /// </summary>
  /// <returns>是否來自搜尋引擎連結</returns>
        public static bool IsSearchEnginesGet() {
            if (HttpContext.Current.Request.UrlReferrer != null) {
                string[] strArray = new string[] { "google", "yahoo", "msn", "baidu", "sogou", "sohu", "sina", "163", "lycos", "tom", "yisou", "iask", "soso", "gougou", "zhongsou" };
                string str = HttpContext.Current.Request.UrlReferrer.ToString().ToLower();
                for (int i = 0; i < strArray.Length; i++) {
                    if (str.IndexOf(strArray[i]) >= 0) return true;
                }
            }
            return false;
        }
        /// <summary>
  /// 獲得當前頁面的名稱
  /// </summary>
  /// <returns>當前頁面的名稱</returns>
  public static string GetPageName()
  {
   string [] urlArr = HttpContext.Current.Request.Url.AbsolutePath.Split('/');
   return urlArr[urlArr.Length - 1].ToLower();
  }
        /// <summary>
  /// 返回表單或Url參數的總個數
  /// </summary>
  /// <returns></returns>
  public static int GetParamCount()
  {
   return HttpContext.Current.Request.Form.Count + HttpContext.Current.Request.QueryString.Count;
  }
        /// <summary>
        /// GET ParamCount
        /// </summary>
        /// <returns></returns>
        public static int GetQParamCount() { return (HttpContext.Current.Request.QueryString.Count); }
        /// <summary>
        /// POST ParamCount
        /// </summary>
        /// <returns></returns>
        public static int GetFParamCount() { return (HttpContext.Current.Request.Form.Count); }
        #endregion

        #region GetCurrentFullHost/GetHost/GetIP/GetUrl/GetReferrer/SaveRequestFile/GetOS/GetBrowser
        /// <summary>
        /// 取全IP包括連接埠
        /// </summary>
        /// <returns>IP和連接埠</returns>
        public static string GetCurrentFullHost()
        {
            HttpRequest request = HttpContext.Current.Request;
            if (!request.Url.IsDefaultPort)
                return string.Format("{0}:{1}", request.Url.Host, request.Url.Port.ToString());
            return request.Url.Host;
        }
        /// <summary>
        /// 取主機名稱
        /// </summary>
        /// <returns></returns>
        public static string GetHost() { return HttpContext.Current.Request.Url.Host; }
        /// <summary>
        /// 前台URL
        /// </summary>
        /// <returns></returns>
        public static string GetUrl() { return HttpContext.Current.Request.Url.ToString(); }
        /// <summary>
        /// 來源URL
        /// </summary>
        /// <returns></returns>
        public static string GetReferrer() {
            string str = null;
            try {
                str = GetServerString("HTTP_REFERER").Trim();
                if (str.Length==0) str = HttpContext.Current.Request.UrlReferrer.ToString();
            } catch { }

            if (str == null) return "";
            return str;
        }
        /// <summary>
        /// 儲存Request檔案
        /// </summary>
        /// <param name="path">儲存到檔案名稱</param>
        public static void SaveRequestFile(string path)
        {
            if (HttpContext.Current.Request.Files.Count > 0) HttpContext.Current.Request.Files[0].SaveAs(path);
        }
        #region GetIP
        /// <summary>
        /// 取IP
        /// </summary>
        /// <returns>返回IP</returns>
        public static string GetIP() {
            string result = String.Empty;
            result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

            if (result != null && result != String.Empty) {//可能有代理
                if (result.IndexOf(".") == -1) result = null;
                else {
                    if (result.IndexOf(",") != -1) {//有“,”,估計多個代理。取第一個不是內網的IP。
                       
                        result = result.Replace(" ", "").Replace("'", "");
                        string[] temparyip = result.Split(",;".ToCharArray());
                        for (int i = 0; i < temparyip.Length; i++) {
                            if (temparyip[i].IsIP()
                                && temparyip[i].Substring(0, 3) != "10."
                                && temparyip[i].Substring(0, 7) != "192.168"
                                && temparyip[i].Substring(0, 7) != "172.16.")
                            {
                                return temparyip[i];    //找到不是內網的地址
                            }
                        }
                    }
                    else if (result.IsIP()) //代理即是IP格式
                        return result;
                    else
                        result = null;    //代理中的內容 非IP,取IP
                }

            }

            string IpAddress = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null
                && HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != String.Empty)
                ? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
                : HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

            if (null == result || result == String.Empty)
                result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

            if (result == null || result == String.Empty)
                result = HttpContext.Current.Request.UserHostAddress;

            return result;
        }
        #endregion
        #region GetOS
        /// <summary>
        /// 取作業系統
        /// </summary>
        /// <returns>返回作業系統</returns>
        public static string GetOS() {
            HttpBrowserCapabilities bc = new HttpBrowserCapabilities();
            bc = System.Web.HttpContext.Current.Request.Browser;
            return bc.Platform;
        }
        #endregion
        #region GetBrowser
        /// <summary>
        /// 取遊覽器
        /// </summary>
        /// <returns>返回遊覽器</returns>
        public static string GetBrowser()
        {
            HttpBrowserCapabilities bc = new HttpBrowserCapabilities();
            bc = System.Web.HttpContext.Current.Request.Browser;
            return bc.Type;
        }
        #endregion
        #endregion
    }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.