Asp.net笔记(1)

  1. Get和post区别
  • Get通过url显式传递参数,参数传递长度有限

  • Post隐式传递,可以传递数据量较大的数据

  1. 表单只可提交有name 的input 、select、textarea的value。对于不能提交value的,例如div。可以用hidden类型的input代替传送。这就是ASP.NET的viewstate机制的由来。

  2. 大量的数据不能存储在hidden或者viewstate中,会增加上传流量,导致网页速度变慢。同时表单中不能存储机密数据,会造成数据欺骗。

  3. 后台变量不能保存B端的值,对此引用session机制与cookie。Session是B端用户相关信息与S端内存的对应关系。Cookie将这些信息数据保存在本地。Session中不能存储过大的数据,并且超过一段时间会自动清除。例如在线编辑文章,编辑时间过长导致提交时出现文章提交失败,超时或者丢失。优化网页案例:网站主站域名与音乐站,图像站等大流量子站域名区分开,防止cookie的大量提交更新。

  4. 每一个请求都会new一个实现了IHttpHandler接口的类的实例进行处理,用完后就GC,不会保留。

  5. JS作为客户端校验能方便用户,但js被禁用后会引起不必要的麻烦,所以数据限制等功能还要在服务端做处理。

  6. asp:Button标签中 OnClientClick为客户端点击事件,onclick是服务端点击事件。

  7. VirtrualPathUtility虚拟路径方法:

  • ToAbsolute(“/ex.aspx”) 将虚拟路径/ex.aspx转换为绝对路径

  • AppendTrailingSlash(“”) 判断虚拟路径最后是否有/,如果没有就加上

  • Combine(“”,””) 合并两路径,需要注意路径一的末尾如果没有/就找到最后一个/处进行合并,例如Combine(“/a/b”,”c.html”)合并为/a/c.html

  1. Response对象:
  • Buffer:允许缓存

  • Flush:立即将缓存区内容发给浏览器,常用于按步骤的输出

  • Clear:清空缓冲区

  • End:终止请求,不在执行后面的代码

  • Redirect:重定向,浏览器自己访问新网站,所以地址栏变化。两次报文处理,通知访问和访问。

  • OutputStream:输出流,如excel,图片

  • SetCookie:设置Cookie

  • WriteFile: 直接输出文件到浏览器

  1. 在用aspx输出非html的例子中经常看到用clear来输出httpmodule等附加内容。所以不推荐用aspx输出非html。(用ashx)

  2. Request对象:

  • AppRelativeCurrentExecutionFilePath:当前页面相对路径

  • hysicalApplicationPath:当前应用物理路径

  • PhysicalPath:当前页面物理路径

  • UrlReferrer:网页来源,用于防盗链

  • UserHostAddress:获取访问者IP

  • UserLanguages:获取访问者浏览器支持语言

  • Cookie:读取Cookie

  1. Server对象:
  • Transfer:服务器内部转向,由其他aspx页面接管。浏览器地址不变。不能重定向到外部网站。只有一个请求。并且不能重定向到ashx

  • HttpContext:有时候不能直接拿到HttpContext 对象,需要HttpContext.Current来取。

  1. HttpHandler
  • 利用Response.AddHeader(),加入报文头。

  • Content-Disposition:attachment;filename=*.*用于作为下载链接

  • Filename中如果有中文,先用HttpUtility.UrlEncode()编码

  1. 在ashx下使用Session时需要实现IRequiresSessionState接口

  2. 在建立asp.net项目时,不要在文件夹中包含#符号,以免解析路径出错

作者

Wu Rang

发布于

2011-08-26

更新于

2021-04-04

许可协议


评论