首页 > 代码库 > ASP.NET笔记

ASP.NET笔记

动态网页和B/S技术

可以与用户进行交互 根据不同的时间 不同的人 有不同的实现

CJI ASP PHP ASPX ASP.NET(MVC)

C/S(部署在局域网或者单机上 客户端服务器端都要安装应用程序 每个端点都要升级) B/S(只需要有浏览器 部署在Web服务器上 升级只需要升级服务器)

B/S结构中浏览器端与服务器端采用请求/响应模式进行交互(客户端发送的叫做请求)

服务器端给客户端相应的响应

http协议

请求/响应的处理模式

http通讯协议特征

短连接,通讯后网络立即断开;

无状态,对于服务器来说,每一个请求都是全新的;

可以运载多种数据内容,如网页、图像、音频、视频等;

是一种明文数据传输协议,不安全。

(服务器端角度看)

没有客户端发请求服务器端绝不可能主动发出响应

服务器和客户端通讯完成以后随即断开连接,下次通讯时无法区分是哪一个客户端

服务器端基本是只有一个 客户端可以有无限多个,属于一种一对多的关系

(客户端角度看)

要接收服务器端的数据 的话 必须客户端先主动发起请求

要让服务器端能够分辨也自己 必须主动告诉服务器端

Hhtp通讯协议细节

URL统一资源描述符(统一资源定位符)

host(主机)网络上主机的名称(可以用IP地址替换)[:port](端口号)[path](路径)

get (请求方法)(明文传输(有个数限制)) / post 数据打包传输 没有大小个数限制

http状态码

响应状态码(200 成功)

3开头代表重定向

4开头代表请求错误

404 没找到

5、6开头 服务器错误

505 协议版本不支持

MIME类型

每个MIME类型由两部分组成,前面是数据的大类别,后面定义具体的种类

服务器端给客户端改善的数据类型是通过mime类型控制的

ASP.NET 是一种创建动态网站的技术

ASP.NET 是一个事件驱动的、基于控件的体系结构

ASP.NET经过两次编译

IIS

ASP.NET引擎 (环境)

第一次有生成页面类的过程 第二次则没有 直接实例化页面类

System.Web.UI.Page 类 (页面类)

<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”页面名.aspx.cs” Inherits=”类名” %> (Page指令)

Init(初始化页面时)

Load(加载页面时)(Page.IsPostback(判断是不是首次加载))

PreRender(页面显示前)

Unload(页面卸载时)

ASP.NET中的常见内置对象

Page对象 指向页面自身的方式,作用域为页面执行期

Request对象 读取客商在Web请求期间发送的值

Response对象 封装了页面执行期返回到http客户端的输出

Application对象 代表当前应用程序 作用于整个程序运行期的状态对象

Session对象 会话对象 会话期状态保持对象,用于跟踪单一用户的会话(存储在服务器端)

Cookie对象 客户端保持会话信息的一种方式(保存在浏览器上的(会话Cookie))

Server对象 提供对服务器上的方法和属性的访问

Request.QueryString 可以获取通过URL路径传来的数据

Request.From 获取通过表彰提交传输的数据

Request.Params 以上方式传输的内容都可以使用该属性获取

网页传的值默认是string类型的

Response.Redirect(重定向到另外一个页面)(两次请求)

页面生命周期(配置阶段 事件处理阶段 显示阶段 清除阶段)

Server 对象是HttpServerUtility类的补钙,包含处理web请求的方法

Execute方法和Transfer方法均会停止当前页面的执行,并转去执行用户在方法内指定的URL,同时用户的会话状态和任何当前的事务处理状态都将传送给新页面

区别:

Server.Execute(当前页面中可以嵌入其它页面的内容)(控制权的相对转移,控制权会再次回到本页面,执行后续的事件处理)

Server.Transfer(URL参数指定的页面处理完后,控制权不会返回给调用此方法的页面,并且在新页面完成执行时结束,URL地址不变)(是服务器内部的跳转,是控制权的绝对转移,在转移期间可以传递数据,URL地址不变)(是服务器内部 控制权的绝对转移,对外面来说是透明的,感觉不到的,是一次请求,URL地址不变)

Response.Redirect(是客户gfir重定向,是丢弃了原有的请求数据,重新开启新的请求,URL地址会变化)

Html表单默认传输方式 GET 服务器控件默认传输方式 POST

Server.HtmlEncode(会自动转码为Html)

Server.HtmlDecode(自动解码)

Server.UrlEncode(包含特殊字符 可以用.进行转码)

Server.UrlDecode()

protected 的类可以在前台编码中使用

<%=  %>(表达示 输出后台的值)

Server.MapPath

~/代表网点的虚拟根目录

状态管理

状态是任何类型的数据能够在一段时间内保持活跃的信息

这段时期可以是整个应用程序生命周期,也可以是用户使用这个应用程序的时间,或者用户浏览另外一个页面之前这个页面的生命周期

状态管理是您对同一页或不同页的多个请求维护状态的页信息的过程

http(hypertext transfer protocol):超文本传输协议(应用层协议)(不记录用户的信息)

POST GET HEAD OPTIONS DELETE TRACE PUT (请求方式)都是干嘛的

浏览器默认都是GET表单最好是POST

GET 的数据容量不能超过1K    POST数据量不受限制

按照存储状态的位置,ASP.NET中状态保持分类如下

服务器端;Application(所有用户都能访问)、 Session(会话期状态保持对象:关掉浏览器会话结束(最大非活动时长 默认:分钟))

窗户端:Cookie()、 ViewState、 查询字符串、 隐藏的窗体字段(隐藏域)

Session

Sessoin.Clear();清空Session

Session.Abandon();终止会话

Cookie

最大为4KB 保存在客户端浏览器或客户端硬盘

在客户端系统中保留客户端的个人信息

会话Cookie(暂时的 关闭浏览器后,任何会话Cookie都会丢失)

持久性Cookie(保存在客户端硬盘,需要设置Cookie的过期时间)

Cookie缺点:不提供任何安全保障,由客户端系统控制;容量有限;浏览器最多只可以容纳20个

eg:

HttpCookie cookie = new HttpCookie(“Cookie名称”, “值”);

Cookie.Expires(过期时间(设置此属性后就是持久性Cookie)) = DataTime.Now.AddMonths(1);

Response.Cookies.Add(cookie);

读取:Requset.Cookies[“cookie(名称)”].value;(失效得到的值为null)

App_Code(创建的类、接口要放在这个文件夹下)

ViewState(视图状态)(当前页面内有效)(使用方式和Session一样 作用域为当前页面)(<% @Page ViewStateEncryptionMode=”Always”%>)

Application表示ASP.NET应用程序的实例

状态由HttpApplicationState类包括所有及各种关的方法和集合

当第一个用户请求一个ASP.NET文件时,会应用程序并创建一个Application对象

可以在整个应用程序中使用,创建的对象将持续到应用程序关闭。它是应用程序级变量,所有页面都可以使用该对象

Application对象以键/值对存储数据

Global.asax(全局应用程序类)

Application_Start(应用程序启动) Application_End(应用程序关闭) Application_Error(未处理错误) Session_Start(会话开始) Session_End(会话结束)

ASP.NET控件(HTML控件、 Web服务器控件)

Web服务器控件位于System.Web.UI.Webcontrols命名空间下

Literal控件 Repeater

TextBox控件的AutoPostBack属性 是否自动回传到服务器 (TextMode)

RequireFieldValidator控件 ControlToValidate属性(要验证的控件的ID)(add key=”ValidationSettings:UnobtrusiveValidationMode” value = http://www.mamicode.com/“None” />)

正则:”+”表示至少出现1次 (表示组) [可以出现其中的任意一个字符(任选其中一个 )] ?是0到1次 *是0到n次

母版页:统一风格的作用(不能使用输出缓存)

缓存:是一项在计算中广泛用来提高性能的技术,它将访问频率高或构造成本高的数据保留在内存中、 无需重新创建的情况下多次使用

ASP.NET支持两种缓存:输出缓存 数据缓存

<%@OutputCache Duration(缓存时间 单位是秒) VaryByParam=”none”(不根据参数缓存) VaryByControl=”控件名”(根据控件名缓存) %>

数据缓存:Cache(缓存类) (存的也是键值对)

Shared=”true”

用户控件(.ascx)(可以使用输出缓存)(<%@Control %>)(定义后台代码的关联)(<%@ Register %>)(注册用户控件)

DataBind()实现数据绑定必须的代码

Ajax Asynchronous JavaScript and XML

$.ajax({

type: “POST”,

contentType: “application/json; charset=UTF-8”

});

HttpContext(代表当前请求的一个上下文环境)

IIS处理根据文件的后缀名

ISAPI应用程序(实际上只是一个接口,起到一个代理的作用,主要工作是映射所请求的页面(文件) 和与此后缀名相应的实际的处理程序)

处理程序映射

HttpRuntime类是asp.net的一个主要入口 ProcessRequest处理请求

应用程序域 AppDomain

HTTP.sys的内置驱动程序来监听来自外部的HTTP请求

在5.0中 所有应用程序都在进程Aspnet_wp.exe下 死一个都死

iis6 w3wp.exe

HttpModule可以做一些执行某个实际工作前的事情

HttpHandler也是http请求处理的最底层

HttpModule 实现了System.Web.IhttpModule接口的类(本质上就是过滤器(过滤请求和响应))(有访问HttpContext对象的权限,可以修改请求,输出响应的内容以及提供自定义的身份验证)(针对每一个请求提供响应前处理和响应后处理)(多个HttpModule可以钩住相同的事件 事件被处理的顺序是它们在web.config里配置的顺序)

 

 

使用HttpModule实现权限管理的步骤:

1 定义一个类Qx, 实现System.Web.IhttpModule接口

2 实现接口中的Init方法,对context.AcquireRequestState事件进行处理,截获用户的请求,判断用户有没有访问特定资源的权限

3 在web.config中添加该HttpModule的配置

Application.CompleteRequest(终止当前请求);

水印

 技术分享

全局Handler

 技术分享

mechine.config:提供整个机器的默认配置,对该文件的个性将影响所有本机的站点

web.config:一般用于应用程序级别的配置文件,对其修改不影响其他站点,也可以用于站点下的子目录

基于XML区分大小写

可读可写

修改配置 不用重启服务器

应用配置应用最近的原则

安全控制:身份验证(登录页面)(是否拥有相应的身份); 权限控制(控制各种身份的用户所拥有的权限)

身份验证方式

Windows身份验证

Passport身份验证

Forms身份验证

<authentication mode=”Forms”><forms name=”” loginUrl=”页面” timeout=”60” protection=”All”(加密) ></forms></authentication>

授权:allow(允许) deny(拒绝) *(所有用户) ?(匿名用户)

<authorization><deny users=”?” /><allow roles=”用户名” /><deny users=”*” /></authorization>(系统总是按照从前向后逐条匹配的方式,执行最先的匹配者)

System.Web.Security.FormsAuthentication.RedirectFromLoginPage(用户名, false)(创建验证票)

Session.Clear();

Session.Abandon();

System.Web.Security.FormsAuthentication.SignOut();

Response.Redirect(退出后的页面);

 

 

ASP.NET笔记