Request对象
Response.Write(Request.ApplicationPath) //应用根路径
Request.AppRelativeCurrentExecutionFilePath //当前执行请求相对于应用根目录的虚拟路径,以~开头
Request.PhysicalApplicationPath //当前应用的物理路径,如 D:\TEST\WEB
Request.PhysicalPath //当前请求的物理路径,如 D:\TEST\WEB\a.aspx
Request.RawUrl //原始请求URL地址
Request.Url //请求的URL,含有域名
Request.UrlReferrer //网页的来源,可根据这个判断从百度搜的哪个关键词,防下载盗链,防图片盗链,可以伪造(讯雷)
Request.UserHostAddress //访问者的IP地址
Request.UserLanguages //访问者浏览器支持的语言
Request.Cookies //浏览器发过来的COOKIE
Request.MapPath("~/b.aspx") //将虚拟路径转换为磁盘物理路径
Request.QueryString["user"] //获得URL中user的值
Request.Browser.Type //浏览器的名称和主版本号
Request.Browser.Platform //操作系统版本
Response对象
响应的缓冲输出:为了提高服务器的性能,ASP.NET向浏览器Write的时候默认并不会第Write一次都会
立即输出到浏览器,而是会缓存数据,到合适的时候或者响应结束才会将缓冲区中的数据一起发送到浏览器
Response对象的主要成员:
Response.Buffer,Response.BufferOutput 两个属性是一样的,用来控制是否采用响应缓存,默认true
Response.Flush() 将缓冲区中的数据立即发送给浏览器,案例:大量数据导入时,显示进度,用Thread.Sleep模拟耗时
Response.Clear() 清空缓存区中的数据,这样在缓存区中的没有发送到浏览器端的数据被清空,不会被发送到浏览器
Response.ContentEncoding 输出流的编码
Response.ContextType 输出流的内容类型,如 html(text/html),普通文本(text/plain),JPEG图片(image/JPEG)等
Response.Cookies 返回给浏览器的Cookie的集合,可以通过它设置Cookie
Response.OutputStream 输出流,在输出图片,Excel文件等非文本内容时用到
Response.End() 终止响应,将之前缓存中的数据发给浏览器,End()之后的代码不会被执行
Response.Redirect("url") 重定向浏览器到新的网址
Response.SetCookie(HttpCookie cookie) 向输出流中更新写到浏览器中的Cookie
Response.Write() 向浏览器输出内容
Response.WriteFile() 向浏览器输出文件,如 Response.WriteFile("c:\a.txt");
Server对象
Server是context的一个属性,是HttpServerUtility类的一个对象
Server.HtmlDecode(),Server.HtmlEncode(),Server.UrlEncode(),Server.UrlDecode()
UrlEncode是处理超链接的,HtmlEncode是处理HTML代码的
Server.Transfer(path) 内部重定向请求,是服务器内部接管,只有一次http请求,浏览器地址栏不会变化
与Redirect不同,另一个是二个请求,URL会变化
因为是内部接管,所以在被重定向到的页面中是可以访问到Request,Cookies等
而Redirect不行,因为他是让浏览器去访问,注意:Transfer是内部接管,因此
不能像Redirect那样重定向到外部网站
使用Server.Transfer不能直接重定向到ashx,否则会报错"执行子请球出错"
有时候不能拿到HttpContext对象,比如在Global.asax中,可以通过 HttpContextCurrent拿到当前的
HttpContext,进而拿到 Response,Request,Server等