場景ASP.NET中新建Web網(wǎng)站并部署到IIS上(詳細(xì)圖文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/107199747 在上面博客中已經(jīng)將網(wǎng)站部署到了IIS上。 .NET Framework 為了保證數(shù)據(jù)的安全性,并不允許所有的對象都可序列化。 要序列化某對象,需要將該對象聲明為可序列化。把一個類標(biāo)識為可序列化只需要在類上添加注解Serializable。 要實現(xiàn)序列化,需要使用System.Runtime.Serialization.Formatters.Binary下的BinaryFormatter類。 該類提供了Serialize 和Deserialize兩個方法實現(xiàn)序列化和反序列化。 因為是要基于“流”的操作,所以需要使用System.IO下的FileStream類。 注: 博客: 實現(xiàn)想要記錄一下系統(tǒng)最后一次用戶登錄的信息,包括登錄名、登錄時間、登錄IP。 紀(jì)錄以后在每次打開登錄頁面時顯示上一次登錄的信息。 僅僅只有一條信息,沒必要在數(shù)據(jù)庫中建個表。 新建一個Web窗體頁面Login.aspx,然后打開其設(shè)計視圖,拖拽幾個標(biāo)簽和輸入框
頁面代碼為: <form id="form1" runat="server"> <div> 用戶名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <br /> 密 碼:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> <br /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="登錄" /> <br /> <br /> 上次登錄信息-------------------<br /> 用戶名:<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <br /> 登錄時間:<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> <br /> IP:<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label> </div> </form>
要序列化登錄信息對象,得新建一個登錄信息的類并標(biāo)記為可序列化 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace DeployTest.Models { [Serializable] public class LoginModel { private string _loginName; public string LoginName { get { return _loginName; } set { _loginName = value; } } private DateTime _loginTime; public DateTime LoginTime { get { return _loginTime; } set { _loginTime = value; } } private string _loginIp; public string LoginIp { get { return _loginIp; } set { _loginIp = value; } } } } 在Login.aspx.cs文件里添加兩個用于序列化和反序列化對象的方法 /// <summary> /// 序列化對象 /// </summary> /// <param name="fileName"></param> /// <param name="lo"></param> private void Serializable(string fileName,LoginModel lo) { //創(chuàng)建二進(jìn)制格式對象 BinaryFormatter bf = new BinaryFormatter(); //序列化到文件中 using(FileStream fs = new FileStream(fileName,FileMode.OpenOrCreate)) { bf.Serialize(fs,lo); } } /// <summary> /// 反序列化對象 /// </summary> /// <param name="fileName"></param> /// <returns></returns> private LoginModel Deserializable(string fileName) { LoginModel lo = null; //創(chuàng)建二進(jìn)制格式對象 BinaryFormatter bf = new BinaryFormatter(); //反序列化對象 using(FileStream fs = new FileStream(fileName,FileMode.Open)) { lo = bf.Deserialize(fs) as LoginModel; } return lo; } 然后修改登錄按鈕的點擊事件 protected void Button1_Click(object sender, EventArgs e) { //序列化文件的路徑 string fileName = Server.MapPath("~/") + "lastLogin.txt"; //獲取登錄的信息并賦值給model LoginModel lo = new LoginModel() { LoginName = this.TextBox1.Text, LoginTime = DateTime.Now, LoginIp = Request.UserHostAddress }; //將model對象序列化到文件 this.Serializable(fileName,lo); } 序列化完了,還需要在頁面加載的時候?qū)⑸洗涡蛄谢男畔⒄故镜巾撁嫔?,修改Page_Load方法 protected void Page_Load(object sender, EventArgs e) { //獲取序列化文件路徑 string fileName = Server.MapPath("~/") + "lastLogin.txt"; try { //反序列化文件到model LoginModel lo = this.Deserializable(fileName); //給頁面上賦值 this.Label1.Text = lo.LoginName; this.Label2.Text = lo.LoginTime.ToString(); this.Label3.Text = lo.LoginIp; } catch { } } 運行項目,然后訪問Login.aspx頁面
然后來到項目所在目錄下,找到并打開lastLogin.txt
|
|