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项目时,不要在文件夹中包含#符号,以免解析路径出错
Asp.net笔记(1)