ASP.NET中新建Web网站并部署到IIS上(详细图文教程):数据库
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/107199747编程
在上面博客中已经将网站部署到了IIS上。安全
.NET Framework 为了保证数据的安全性,并不容许全部的对象均可序列化。网站
要序列化某对象,须要将该对象声明为可序列化。把一个类标识为可序列化只须要在类上添加注解Serializable。this
要实现序列化,须要使用System.Runtime.Serialization.Formatters.Binary下的BinaryFormatter类。spa
该类提供了Serialize 和Deserialize两个方法实现序列化和反序列化。.net
由于是要基于“流”的操做,因此须要使用System.IO下的FileStream类。设计
注:code
博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。orm
想要记录一下系统最后一次用户登陆的信息,包括登陆名、登陆时间、登陆IP。
纪录之后在每次打开登陆页面时显示上一次登陆的信息。
仅仅只有一条信息,不必在数据库中建个表。
新建一个Web窗体页面Login.aspx,而后打开其设计视图,拖拽几个标签和输入框
页面代码为:
<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>
要序列化登陆信息对象,得新建一个登陆信息的类并标记为可序列化
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) { //建立二进制格式对象 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; //建立二进制格式对象 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); }
序列化完了,还须要在页面加载的时候将上次序列化的信息展现到页面上,修改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