ASP.NET 高级编程基础第八首—Request对象和虚构路径

啊谈月饼(文/远方)

序言:
这首我们初步说一下虚拟路径和Request对象,这些当asp.net中还是殊常用之小知识点,希望咱们经过看就首博客能够更加的深化对当下几个知识点的习,尤其是编造路径的”~”的施用还有Request对象的片段属性等。

珍贵的阴凉天,午风不干燥,阳光不紧,趁在下午傻眼的空挡,忙里偷闲翻了翻日历,这才懂得中秋即将到了。苏东坡要是了解了,肯定思量着找找个将酒问青天的夜间,给阿辙来单飞鸿遥寄,只道托付千里并婵娟。而己还不曾感伤到十分文人的地步,脑子流在口水光想在月饼了。

  1. 奇异路径标示”~” 虚拟路径

自家是凭着罢众多月饼的,天南海北,五花八门,只要会里有些卖,没有没有尝试了的,这种吃货性格多多少少以及自家那苏北农家汪老臭味相投。在这中国之四方地界上,月饼大致分个四深派,所谓京式月饼,苏式月饼,广式月饼,滇式月饼,自然还有如皖南山区之徽式月饼,潮汕地区潮式月饼,还有回族兄弟的清真月饼云云。

(1)
”/表示网站到底目录(域名),../表示上级目录,./表示当前目录”等Http标准定点不均等,~是ASP.NET定义的特殊符号,是ASP.NET内部开展推介的用法,推荐资源一定都下~从应用到底目录开始定义,应用到底目录及网站根本目录的区别在:如果拿一个应用程序部署及http://www.cnblogs.com/hanyinglong这个目录下面,应用程序的彻底目录就是Http://www.cnblogs.com/hanyinglong,网站的到底目录是:http://www.cnblogs.com。因此最好好用”~”,”~”并无见面吃浏览器认,因此ASP.NET会用是途径转换为相对于网站的一干二净目录的全路径在出口及浏览器中。

相似而言,平常所显现之月饼大凡是广式和苏式,最可怜之风味就是是一个软皮,一个酥皮,软的比如是粤人平日饭桌上,那不行缺席的输入润滑的浓汤;酥的虽可江苏丁轻盈雅致,温润如玉的心性,而且可凡是像相同总人口酥类似名字里含酥的糕点,十有八九凡苏州一代人的吃食。因在无限常见,食馅多是红豆、莲蓉、五仁齐规规矩矩的资料,故而,也不要多花些笔墨唠叨。

  1. 编程处理”~”

一度有人给我从北京市拉动了京式月饼,着实给自己开始了见识,乍一关押,小山包的样子,我差点当作了有点寿包。那月饼又分为红白片类似,指的凡壳皮的色泽,据说这尚自和京城总人口起源极生的兔儿爷的往掌故,似乎就是兔儿爷用红白片质药临床好了京的疫病,从此那广寒宫的月饼里就是落了即有限栽颜色。一口咬下去,脆皮裂开,竟会流一口的麻油,芝麻香味里混的凡青红丝,有种脆甜的爽快感觉。

(1)
如果当服务端控件被(使用runat=”server”的控件)会自动将”~”进行更换,如果以HTML控件或者用以代码中易的话语可以下VirtualPathUtility类中静态方法进行虚构路径,全路线等之换,比如:VirtualPathUtility.ToAbsolute(“~/a/b.aspx”)就是用虚拟路径转换为相对应于应用程序根目录的全路径,也就算是”WebSite/a/b.aspx”。

以及京式红月饼有些相似的凡云南之滇式月饼,这鼎鼎有名,汪老以追思身在西南联大的那么几年时,每每回想滇式月饼,都见面满口生津,涎水直淌。滇式月饼又给云腿包子,顾名思义,自然选料是同金华火腿起名的云南本土宣威火腿,且掺和了昆明地方的玫瑰花瓣,火腿的烟熏味和玫瑰花的芬芳就这么神奇地融合,这是一般人非能够分晓的。云腿包子的面皮是甲,须得牙口利索,我猜是当年茶马古道上马帮的必要干粮,同新疆馕饼一个理。汪老在书里说吉安庆之火腿月饼全国第一,我当昆明不时特别寻找了,却无检索着,不能不说凡是一样遭憾事。

(2) VirtualPathUtility类的机要方法

那儿扣霍达写的《穆斯林的葬礼》时,清真月饼给自己留了不错的印象。后来及了宁夏,专门请来品尝了品尝,才知晓其中竟然是葱香牛肉馅。不合时宜地回忆了一个截,火车就要开始走了,姑娘说,我们是未可以的,就比如这个世界上无巧克力香辣牛肉月饼一样,十年后,一各项糕点师一边烘焙着巧克力香辣牛肉月饼,一边悄悄地留下了泪花。

 1) string AppendTrailingSlash(string
VirtualPath);如果路径VirtualPath最后没”/”则长。

望实在里摆,我之口味是较传统的,很多物都是为尝试个奇特,强忍在吞下。记得在苏州观前场西头有舍鲜肉月饼店,每天排队的人口犹能除掉至堵车,我采购过相同坏,一卡开里头竟然产生鲜肉的汤汁,不在意间流动了同样嘴巴,而嘴里滑腻腻的发就跟被人强行喂了嚼烂的脚底一样。

 2) string Combine(string basePath,string
relativePath);将少独路子进行联。

但是生一段时间,大家都于呼唤在被五仁滚来月饼界,并扬言在五仁月饼占领了垃圾桶经常,我是吗五仁透报不平的。常见的五仁即杏仁、葵花子仁、冬瓜子仁、榄仁、南瓜子仁。而这些食材都是挑选料上成为,价格不菲的。当压制在一齐时,咸中有衰竭,仁香浓郁,五味俱全。我所当的鲁南有些市里,学校各至中秋犹见面发月饼,是地方历史悠久的孔府食品厂制作的苏式月饼,里头饼馅就是五仁。当别人拆起来平拘禁,立即抛弃上垃圾箱经常,我老是义无反顾地拦下,送上肚子里。

 3) string GetDirectory(string virtualPath); 返回虚拟路径的目部分。

每当有吃了的月饼里,我不过钟情之莫过于豆沙月饼,这或者是由于自身对红豆的偏爱吧。唐人王维曾有诗句曰“红豆生南国,春来发几挺,愿君多收集,此物最想。”这江南之红豆融了自己小记忆哦,以至于每次离乡北上求学常常,我还设当背包里放几管红豆馅,当别人用煎饼卷好葱时,我卷的凡红豆馅,甚至于总将馍掰开,里头也灌进红豆馅。

 4) string MakeRelative(string fromPath,string toPath);
计算两个虚拟路径的相对路径。

幼时,每至中秋前夕,外婆总要索要在青砖老屋里制作月饼。故乡就处于苏南,但地缘上可凭借宣歙二州,故而月饼也大多是徽式月饼的花样,小巧玲珑,皮酥馅饱。外婆总会在举行月饼前夜,用土灶熬好红豆,放入大量红糖,然后用锅铲一全遍地碾展成细豆沙,当它们搂上锅里的豆沙乘上盆里经常,我就算用指头继续当鼎里捋拭撮进口里,唯恐漏了锱铢。月饼制作流程多一致,用菜籽油揉面,把吉豆沙放入面团里,捏紧收口,塞入模具,继而放入碳炉里烘烤,待到色泽金黄时,便可出炉,霎时间整个村都弥漫在徽式月饼独有的香。

 5) ToAbsolute:转换为绝对路径。

当自己于宿舍谈论月饼时,临沂翠微底峰哥躺在床上回想了黄花鱼煎蛋月饼,隔壁老二也飞上来送了片只大连海蛎子月饼。我恍然在怀念,当年当香格里拉的独克宗古城里,吃到之此生最刺激的牦牛肉火锅是未是为得做成月饼也,要是本身吃在那种月饼,嘴里喷在生气,一出口也会见肿成一块月饼吧。那得找个嗜辣如命的四川女,一块块掰碎,就正在清水喂我喝。

(3) 举例说明:新建一个Web项目,起名为行程径.aspx

中秋节的步伐越来越接近了,我哉欠指在家里人给自身寄些月饼,红豆沙的广式和苏式月饼就哼,其他如酸辣月饼,巧克力香辣牛肉月饼云云,只能够嘴上说说,当真的话,是绝对落无了之。

   <a href=”/a.htm”>a</a> 

2014.8.29

   <a href=”~/b.htm”>b</a> 

i

   <asp:HyperLink ID=”HyperLink1″ runat=”server”
NavigateUrl=”/a.htm”>ce1</asp:HyperLink> 

   <asp:HyperLink ID=”HyperLink2″ runat=”server”
NavigateUrl=”~/b.htm”>ce2</asp:HyperLink>

 然后拖放少独HyperLink控件,给点儿个控件的Text起名叫吧Ce1,ce2,给点儿只控件的NavigateURl赋值为”/b.htm”,”~/b.htm”。在Page_Load事件下面写副如下代码:

Response.Write(“<a href='” +
VirtualPathUtility.ToAbsolute(“~/a/b.htm”) + “‘>动态</a>” +
“<br />”);

Response.Write(VirtualPathUtility.Combine(VirtualPathUtility.AppendTrailingSlash(“~/a/b”),
“c.htm”));

  1. Request对象

(1)
Request.AppRelativeCurrentExecutionFilePath,获取当前实施要的对立于以到底目录的杜撰路径,以”~”开头,比如:”~/第七篇/index.aspx”。

Response.Write(Request.AppRelativeCurrentExecutionFilePath);

(2)
Request.physicalApplicationPath,获取当前利用之大体路径,比如:E:\programmer\陡程序员练习题\aspnetpractice\ashx\

Response.Write(Request.PhysicalApplicationPath);

(3)
Request.PhysicalPath,获取当前呼吁的大体路径,比如:E:\programmer\出人意外程序员练习题\aspnetpractice\ashx\第七篇\index.aspx

Response.Write(Request.PhysicalPath + “<br />”);

(4)
Request.RawURL,获得原始请求URL,比如:/ashx/第7篇/Index.aspx,Request.URL获得请的URL,比如:http://localhost:2602/ashx/第7篇/Index.aspx,区别涉及到URL重写的问题。

      Response.Write(Request.RawUrl + “<br />”);

      Response.Write(Request.Url + “<br />”);

(5)
Request.UrlReferrer网页的自,可以根据这个判断从百度搜到的哪个要字,防下载盗链,放图片盗链,可以充“本图只供博客园内部交流使”,全局防盗链用Globals.asax。

(6) Request.UserHostAddress获得访问者的IP地址

Response.Write(Request.UserHostAddress + “<br />”);

(7)
Request.UserLanguage获得访问者浏览器支持之言语,可以透过这个实现对不同语言的丁显得不同页面。

Response.Write(Request.UserLanguages + “<br />”);

(8)
Request.Cookies获取浏览器发过来的浏览器端的Cookie,从他中读取Cookie值,比如:context.Request.Cookies[“mysessionID”],使用Request.Cookie的时节一般只有是读取,将Cookie写回浏览器要因此Response.Cookies。

(9)
Request.MapPath(virtualPath)将虚拟路径转换为磁盘上之大体路径,request.Mappath(~/第七篇/index.aspx)就会见得到:E:\programmer\蓦然程序员练习题\aspnetpractice\ashx\第七篇\index.aspx

 Response.Write(Request.MapPath(“~/第七篇/index.aspx”));

(10)
新建一个文书夹Request对象,然后新建一个形似处理程序,新建一个HTML页面,在HTML页中形容副如下代码:

<img src=”图片.ashx” />

然后在.ashx页面中描写副如下代码:

 1  context.Response.ContentType = "image/JPEG";
 2 
 3         string fullPath = HttpContext.Current.Server.MapPath("1.jpg");
 4 
 5         using (System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(fullPath))
 6 
 7         {
 8 
 9             using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))
10 
11             {
12 
13                 if (context.Request.UrlReferrer == null) //如果直接浏览则没有URlReferrer
14 
15                 {
16 
17                     //g.Clear(System.Drawing.Color.White);
18 
19                     g.DrawString("禁止直接浏览图片,请在页面中查看", new System.Drawing.Font("宋体", 20), System.Drawing.Brushes.Red, 0, 0);
20 
21                 }
22 
23                 else if (context.Request.UrlReferrer.Host != "localhost")
24 
25                 {
26 
27                     g.Clear(System.Drawing.Color.White);
28 
29                     g.DrawString("本图片仅限内部使用", new System.Drawing.Font("宋体", 20), System.Drawing.Brushes.Red, 0, 0);
30 
31                 }
32 
33                 g.DrawString("你的IP是:" + context.Request.UserHostAddress, new System.Drawing.Font("宋体", 20), System.Drawing.Brushes.Red, 0, 0);
34 
35                 if (context.Request.UserHostAddress == "127.0.0.1" || context.Request.UserHostAddress == "192.168.0.1")
36 
37                 {
38 
39                     //如果直接访问图片URLReferrer就是null,如果是嵌入到别的网页中的请求,URLReferrer就是页面的地址
40 
41                     g.Clear(System.Drawing.Color.Blue);
42 
43                     g.DrawString("IP被屏蔽", new System.Drawing.Font("宋体", 20), System.Drawing.Brushes.Red, 0, 0);
44 
45                 }
46 
47             }
48 
49             bitmap.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
50 
51         }

注解:Request对象同虚构路径我就算说交此地了,下节博客是Response对象及Server对象。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图