ASP.NET 內置對象

来源:https://www.cnblogs.com/Liyuting/archive/2017/12/29/8144489.html
-Advertisement-
Play Games

(1)簡述ASP.NET內置對象。 答:ASP.NET提供了內置對象有Page、Request、Response、Application、Session、Server、Mail和Cookies。這些對象使用戶更容易收集通過瀏覽器請求發送的信息、響應瀏覽器以及存儲用戶信息,以實現其他特定的狀態管理和頁 ...


      (1)簡述ASP.NET內置對象。

  答:ASP.NET提供了內置對象有Page、Request、Response、Application、Session、Server、Mail和Cookies。這些對象使用戶更容易收集通過瀏覽器請求發送的信息、響應瀏覽器以及存儲用戶信息,以實現其他特定的狀態管理和頁面信息的傳遞。

  (2)簡述Response對象。

  答:Response對象用來訪問所創建的並客戶端的響應,輸出信息到客戶端,它提供了標識伺服器和性能的HTTP變數,發送給瀏覽器的信息和在cookie中存儲的信息。它也提供了一系列用於創建輸出頁面的方法,如無所不在的Response . Write方法。

  (3)簡述Request對象。

  答:Request對象是用來獲取客戶端在請求一個頁面或傳送一個Form時提供的所有信息,這包括能夠標識瀏覽器和用戶的HTTP變數,存儲在客戶端的cookie信息以及附在URL後面的值(查詢字元串或頁面中< Form>段中的HTML控制項內的值)。

  (4)簡述Application對象。

  答:在asp.net環境下,Application對象來自HttpApplictionStat類。它可以在多個請求、連接之間共用公用信息,也可以在各個請求連接之間充當信息傳遞的管道。使用Application對象來保存我們希望傳遞的變數。由於在整個應用程式生存周期中,Application對象都是有效的,所以在不同的頁面中都可以對它進行存取,就像使用全局變數一樣方便。

  (5)簡述Session對象。

  答:Session對象就是伺服器給客戶端的一個編號。當一臺WEB伺服器運行時,可能有若幹個用戶瀏覽正在瀏覽這台伺服器上的網站。當每個用戶首次與這台WWW伺服器建立連接時,他就與這個伺服器建立了一個Session,同時伺服器會自動為其分配一個SessionID,用以標識這個用戶的唯一身份。特別說明的是Session對象的變數只是對一個用戶有效,不同的用戶的會話信息用不同的Session對象的變數存儲。在網路環境下Session對象的變數是有生命周期的,如果在規定的時間沒有對Session對象的變數刷新,系統會終止這些變數。

  (6)簡述Server對象。

  答:Server對象提供對伺服器上的方法和屬性的訪問。其中大多數方法和屬性是作為實用程式的功能服務的。Server對象也是Page對象的成員之一,主要提供一些處理頁面請求時所需的功能;例如建立COM對象、將字元串的編解碼等工作。

  (7)簡述Cookie對象。

  答:cookie是一小塊由瀏覽器存貯在客戶端系統上(硬碟)的文本,是一種標記。由WEB伺服器嵌入用戶瀏覽器中,以便標識用戶,且隨同每次用戶請求發往WEB伺服器。Cookies的值比A S P.NET其他集合(例如Form和Server Variables )的值要複雜得多。

  (8)簡述Mail對象。

  答:ASP.NET被賦予了一個發送Email的新對象,名為SmtpMail,實際上Mail對象由System.Web.Mail類庫實現(Class Library)。這個類庫由MailMessage對象、SmtpMail對象、MailFormat對象和MailAttachment對象組成,它們相互合作,完成E-mail的發送。

 

ASP.NET的內置對象介紹 
1.Response 
2.Request 
3.Server 
4.Application 
5.Session 
6.Cookie

一、Response 

Response對象用語輸出數據到客戶端,包括向瀏覽器輸出數據、重定向瀏覽器到另一個URL或向瀏覽器輸出Cookie文件。 
其類名為httpResponse 

屬性和方法 :
1、Write() 向客戶端發送字元串信息            示例:Response.Write (變數數據或字元串)
 

2、BufferOutPut屬性 是否使用緩存     

3、Clear() 清除緩存 

4、Flush() 強制輸出緩存的所有數據 

5、Redirect() 網頁轉向地址     Response對象的Redirect方法將客戶端瀏覽器重定向到另外的URL上,即跳轉到另一個網頁。  示例:Response.Redirect("http://www.baidu.com") 

6、End() 終止當前頁的運行     示例:Response.End() 終止當前頁的運行 

7、WriteFile() 讀取一個文件,並且寫入客戶端輸出流     示例:Response.End() 終止當前頁的運行,FileName 指代需向瀏覽器輸出的文件的文件名
(實質:打開文件,並且輸出到客戶端。) 

二、Request 

Request對象主要是讓伺服器取得客戶端瀏覽器的一些數據,包括從HTML表單用Post或者GET方法傳遞的參數、Cookie和用戶認證。因為Request對象是Page對象的成員之一,所以在程式中不需要做任何的聲明即可直接使用;其類名為 HttpRequest 

屬性很多,但方法很少,只有一個BinaryRead() 

1.使用Request.Form屬性獲取數據 
通過該屬性,讀取<Form></Form>之間的表單數據.註意:提交方式要設置為“Post”。 
與Get方法相比較,使用Post方法可以將大量數據發送到伺服器端 

2.利用Request.QueryString屬性獲取數據 
Request對象的QuerySting屬性可以獲取 HTTP 查詢字元串變數集合 。 通過該屬性,我們可以讀取地址信息 http://localhost/aaa.aspx?uid=tom&pwd=abc 其中標識為紅色部分的數據. 
註意:提交方式要設置為“Get”

3.問題:Request.Form用於表單提交方式為Post的情況,而Request.QueryString用於表單提交方式為Get的情況,如果用錯,則獲取不到數據。 
解決方法:利用Request(“元素名”)來簡化操作。 //應合理選擇避免浪費系統資源 

4.Request.ServerVariables("環境變數名稱") 
類似的還有:UserHostAddress,Browser,Cookies,ContentType,IsAuthenticated 
Item,Params 

 三、Server 

 Server對象提供對伺服器上的方法和屬性進行的訪問 .其類名稱是HttpServerUtility. 

Server對象的主要屬性有: 
MachineName:獲取伺服器的電腦名稱。 
ScriptTimeout:獲取和設置請求超時(以秒計)。 

方法名稱 說明 :
1、CreateObject 創建 COM 對象的一個伺服器實例。 
2、Execute 執行當前伺服器上的另一個aspx頁,執行完該頁後再返回本頁繼續執行 
3、HtmlEncode 對要在瀏覽器中顯示的字元串進行HTML編碼並返回已編碼的字元串。 
4、HtmlDecode 對HTML編碼的字元串進行解碼,並返回已解碼的字元串。 
5、MapPath 返回與 Web 伺服器上的指定虛擬路徑相對應的物理文件路徑。 
6、Transfer 終止當前頁的執行,併為當前請求開始執行新頁。 
7、UrlEncode 將代表URL的字元串進行編碼,以便通過 URL 從 Web 伺服器到客戶端進行可靠的 HTTP 傳輸。 
8、UrlDecode 對已被編碼的URL字元串進行解碼,並返回已解碼的字元串。 
9、UrlPathEncode 對 URL 字元串的路徑部分進行 URL 編碼,並返回已編碼的字元串。 
編碼: 
Server.HtmlEncode(“HTML代碼”) 
解碼: 
Server.HtmlDecode(“已編碼的HTML”) 
Server對象的MapPath方法將虛擬路徑或相對於當前頁的相對路徑轉化為Web 伺服器上的物理文件路徑。 
語法:Server.MapPath(“虛擬路徑”) 
String FilePath 
FilePath = Server.MapPath(“/”) 
Response.Write(FilePath) 

四、Application 

Application對象在實際網路開發中的用途就是記錄整個網路的信息,如上線人數、線上名單、意見調查和網上選舉等。在給定的應用程式的多有用戶之間共用信息,併在伺服器運行期間持久的保存數據。而且Application對象還有控制訪問應用層數據的方法和可用於在應用程式啟動和停止時觸發過程的事件。

1.使用Application對象保存信息 

Application(“鍵名”) = 值 或 Application(“鍵名”,值) 

獲取Application對象信息 

變數名 = Application(“鍵名”) 或:變數名 = Application.Item(“鍵名”) 或:變數名 = Application.Get(“鍵名”) 

更新Application對象的值 
Application.Set(“鍵名”, 值) 

刪除一個鍵 
Application.Remove(“鍵名”, 值) 

刪除所有鍵 

Application.RemoveAll() 或Application.Clear() 

2.有可能存在多個用戶同時存取同一個Application對象的情況。這樣就有可能出現多個用戶修改同一個Application命名對象,造成數據不一致的問題。 
HttpApplicationState 類提供兩種方法 Lock 和 Unlock,以解決對Application對象的訪問同步問題,一次只允許一個線程訪問應用程式狀態變數。 

關於鎖定與解鎖 
鎖定:Application.Lock() 
訪問:Application(“鍵名”) = 值 
解鎖:Application.Unlock() 

註意:Lock方法和UnLock方法應該成對使用。 
可用於網站訪問人數,聊天室等設備 

3. 使用Application事件 

在ASP.NET 應用程式中可以包含一個特殊的可選文件——Global.asax 文件,也稱作 ASP.NET 應用程式文件,它包含用於響應 ASP.NET或HTTP模塊引發的應用程式級別事件的代碼。 

Global.asax 文件提供了7個事件,其中5個應用於Application對象 

事件名稱 說明 
Application_Start 在應用程式啟動時激發 
Application_BeginRequest 在每個請求開始時激發 
Application_AuthenticateRequest 嘗試對使用者進行身份驗證時激發 
Application_Error 在發生錯誤時激發 
Application_End 在應用程式結束時激發 

五、Session 

Session即會話,是指一個用戶在一段時間內對某一個站點的一次訪問。 
Session對象在.NET中對應HttpSessionState類,表示“會話狀態”,可以保存與當前用戶會話相關的信息。 
Session對象用於存儲從一個用戶開始訪問某個特定的aspx的頁面起,到用戶離開為止,特定的用戶會話所需要的信息。用戶在應用程式的頁面切換時,Session對象的變數不會被清除。 
對於一個Web應用程式而言,所有用戶訪問到的Application對象的內容是完全一樣的;而不同用戶會話訪問到的Session對象的內容則各不相同。 Session可以保存變數,該變數只能供一個用戶使用,也就是說,每一個網頁瀏覽者都有自己的Session對象變數,即Session對象具有唯一性。 

(1)將新的項添加到會話狀態中 

語法格式為: Session ("鍵名") = 值 或者 Session.Add( "鍵名" , 值) 

(2)按名稱獲取會話狀態中的值 

語法格式為: 變數 = Session ("鍵名") 或者 變數 = Session.Item("鍵名") 

(3)刪除會話狀態集合中的項 

語法格式為: Session.Remove("鍵名") 

(4)清除會話狀態中的所有值 

語法格式為: Session.RemoveAll() 或者 Session.Clear() 

(5)取消當前會話 

語法格式為: Session.Abandon() 

(6)設置會話狀態的超時期限,以分鐘為單位。 

語法格式為: Session.TimeOut = 數值 

Global.asax 文件中有2個事件應用於Session對象 

事件名稱 說明 

Session_Start 在會話啟動時激發 

Session_End 在會話結束時激發

六、Cookie

Cookie就是Web伺服器保存在用戶硬碟上的一段文本。Cookie允許一個Web站點在用戶的電腦上保存信息並且隨後再取回它。信息的片斷以‘鍵/值’對的形式存儲。 
Cookie是保存在客戶機硬碟上的一個文本文件,可以存儲有關特定客戶端、會話或應用程式的信息,在.NET中對應HttpCookie類。 
有兩種類型的Cookie:會話Cookie(Session Cookie)和持久性Cookie。前者是臨時性的,一旦會話狀態結束它將不復存在;後者則具有確定的過期日期,在過期之前Cookie在用戶的電腦上以文本文件的形式存儲。 
在伺服器上創建並向客戶端輸出Cookie可以利用Response對象實現。 
Response對象支持一個名為Cookies的集合,可以將Cookie對象添加到該集合中,從而向客戶端輸出Cookie。 
通過Request對象的Cookies集合來訪問Cookie

編寫Cookie

//方式1:
Response.Cookies["username"].value="mike";
Response.Cookies["username"].Expires=DateTime.MaxValue; 

//方式2:
HttpCookie acookie = new HttpCookie("last");
acookie.Value="a";
acookie..Expires=DateTime.MaxValue; 
Response.Cookies.Add(acookie);

//多值Cookie的寫法

//方式1:
Response.Cookies["userinfo1"]["name"].value="mike";
Response.Cookies["userinfo1"]["last"].value="a";
Response.Cookies["userinfo1"].Expires=DateTime.MaxValue; 

//方式2:
HttpCookie cookie = new HttpCookie("userinfo1");
cookie.Values["name"]="mike";
cookie.Values["last"]="a";
cookie.Expires=DateTime.MaxValue; 
//cookie.Expires = System.DateTime.Now.AddDays(1);//設置過期時間  1天
Response.Cookies.Add(cookie)

 讀取Cookie 
Internet Explorer 將站點的 Cookie 保存在文件名格式為 <user>@<domain>.txt 的文件中,其中 <user> 是您的帳戶名。
註意:在獲取Cookie的值之前,應該確保該 Cookie 確實存在。否則,您將得到一個異常

if(Request.Cookies["userName"] != null)
{
str = Request.Cookies["userName"].Value;
}

//多值Cookie的讀取
If ( Request.Cookies["userInfo1"]!=null )
{
  string name=Request.Cookies["userInfo1"]["name"];
  string last=Request.Cookies["userInfo1"]["last"]; 
}

//讀取 Cookie 集合
for(int i = 0 ;i<Request.Cookies.Count ;i++)
{
    HttpCookie cookies = Request.Cookies;
    Response.Write("name="+cookies.Mame+"<br/>");
    if (cookies.HasKeys )//是否有子鍵
    {
        System.Collections.Specialized.NameValueCollection NameColl 
                                             = aCookie.Values ;
        for(int j=0;j<NameColl.Count;j++)
        {
            Response.Write("子鍵名="+ NameColl.AllKey[j] +"<br/>");
            Response.Write("子鍵值="+ NameColl[j] +"<br/>");
        }

    }
    else
    {
        Response.Write("value="+cookies.Value+"<br/>");        
    }
}

運行此代碼時,可看到一個名為“ASP.NET_SessionId”的Cookie,ASP.NET用這個 Cookie 來保存您的會話的唯一標識符。

修改 Cookie 
修改的方法與創建方法相同

刪除 Cookie 
將其有效期設置為過去的某個日期。當瀏覽器檢查 Cookie 的有效期時,就會刪除這個已過期的 Cookie。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 創建一個文本文件,文本寫至這個文件里。 class Bu { public string fileName { get; set; } = "hello.txt"; public string filecontent { get; set; } public void WriteText2File( ...
  • 廢話: 以前總是看別人博客,但是連評論都懶得給一個,於是心有愧疚,開始寫寫東西。本人不是科班出生的CODER,只是看多了,懂一些,瞭解一些思想,也不會動手CODING,也就把看到的換種話記錄下來。最近瞭解了一下asp.net core 的pipeline,認識了CORS,這篇文章就是把關於CORS的 ...
  • 採用OpenXml來修改word特定內容,如下: word: OpenXml修改word之前: OpenXml修改word之後: 代碼: 1 string path = @"C:\Users\Administrator\Desktop\新建文件夾 (2)\1.docx"; 2 using (Word ...
  • 錯誤描述: 下載ABP模板項目3.4.1的版本(當前最新版本),編譯載入nuget包Microsoft.AspNetCore.SignalR時會報如下錯誤: 嚴重性 代碼 說明 項目 文件 行 禁止顯示狀態 錯誤 NU1102 找不到版本為 (>= 1.0.0-preview1-27891) 的包 ...
  • ServicePoint: 提供HTTP連接的連接管理ServicePointManager: 管理ServicePoint 對象的集合 註意事項:1. 將http的request的keepAlive設置為false //如果不是必須的要keepalive的,那麼就要設置KeepAlive為fals ...
  • out參數: out關鍵字 通過引用來傳遞參數,在定義方法和調用方法的時候都必須使用out關鍵字 簡單來講out可以用來返回多個參數類型。 該方法返回類型為bool類型,在返回bool類型的同時也順帶返回了int類型的result變數。即,返回兩種變數類型。 ref參數 ref參數在定義的方法內對其 ...
  • 對文件操作,需要將文件臨時存儲在當前用戶臨時文件夾中: class Bt { public void LocalTempPath() { var tempPath = System.IO.Path.GetTempPath(); Console.WriteLine(tempPath); } } 程式運 ...
  • 一.安裝Centos虛擬機 過程省略…… 二.安裝.Net Core環境 咱直接登錄.net core官網,安裝官網提示的指令依次敲下去就行了, 添加.net 產品註入 1. sudo rpm --import https://packages.microsoft.com/keys/microsof ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...