Asp.net笔记(1)
- Get和post区别
-
Get通过url显式传递参数,参数传递长度有限
-
Post隐式传递,可以传递数据量较大的数据
-
表单只可提交有name 的input 、select、textarea的value。对于不能提交value的,例如div。可以用hidden类型的input代替传送。这就是ASP.NET的viewstate机制的由来。
-
大量的数据不能存储在hidden或者viewstate中,会增加上传流量,导致网页速度变慢。同时表单中不能存储机密数据,会造成数据欺骗。
-
后台变量不能保存B端的值,对此引用session机制与cookie。Session是B端用户相关信息与S端内存的对应关系。Cookie将这些信息数据保存在本地。Session中不能存储过大的数据,并且超过一段时间会自动清除。例如在线编辑文章,编辑时间过长导致提交时出现文章提交失败,超时或者丢失。优化网页案例:网站主站域名与音乐站,图像站等大流量子站域名区分开,防止cookie的大量提交更新。
-
每一个请求都会new一个实现了IHttpHandler接口的类的实例进行处理,用完后就GC,不会保留。
-
JS作为客户端校验能方便用户,但js被禁用后会引起不必要的麻烦,所以数据限制等功能还要在服务端做处理。
-
asp:Button标签中 OnClientClick为客户端点击事件,onclick是服务端点击事件。
-
VirtrualPathUtility虚拟路径方法:
-
ToAbsolute(“
/ex.aspx”) 将虚拟路径/ex.aspx转换为绝对路径 -
AppendTrailingSlash(“”) 判断虚拟路径最后是否有/,如果没有就加上
-
Combine(“”,””) 合并两路径,需要注意路径一的末尾如果没有/就找到最后一个/处进行合并,例如Combine(“
/a/b”,”c.html”)合并为/a/c.html
- Response对象:
-
Buffer:允许缓存
-
Flush:立即将缓存区内容发给浏览器,常用于按步骤的输出
-
Clear:清空缓冲区
-
End:终止请求,不在执行后面的代码
-
Redirect:重定向,浏览器自己访问新网站,所以地址栏变化。两次报文处理,通知访问和访问。
-
OutputStream:输出流,如excel,图片
-
SetCookie:设置Cookie
-
WriteFile: 直接输出文件到浏览器
-
在用aspx输出非html的例子中经常看到用clear来输出httpmodule等附加内容。所以不推荐用aspx输出非html。(用ashx)
-
Request对象:
-
AppRelativeCurrentExecutionFilePath:当前页面相对路径
-
hysicalApplicationPath:当前应用物理路径
-
PhysicalPath:当前页面物理路径
-
UrlReferrer:网页来源,用于防盗链
-
UserHostAddress:获取访问者IP
-
UserLanguages:获取访问者浏览器支持语言
-
Cookie:读取Cookie
- Server对象:
-
Transfer:服务器内部转向,由其他aspx页面接管。浏览器地址不变。不能重定向到外部网站。只有一个请求。并且不能重定向到ashx
-
HttpContext:有时候不能直接拿到HttpContext 对象,需要HttpContext.Current来取。
- HttpHandler
-
利用Response.AddHeader(),加入报文头。
-
Content-Disposition:attachment;filename=*.*用于作为下载链接
-
Filename中如果有中文,先用HttpUtility.UrlEncode()编码
-
在ashx下使用Session时需要实现IRequiresSessionState接口
-
在建立asp.net项目时,不要在文件夹中包含#符号,以免解析路径出错