仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 698|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET网站制作之asp.net 2.0 下的表单考证Cookieless属...

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:46:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
C#中有两处地方用到new关键字,第一处也是最常见的一处是用在调用构造函数的时候,这种情况也是大家见的最多的一种。另一处是用在派生类中,作用有隐藏成员,切断继承关系等,相信第二处的用法大家明显要比第一处生疏。asp.net|cookie|表单考证方才在洗衣服的时分俄然想到明天在做WAP程序的表单考证的时分碰到一个成绩,在不撑持Cookies的挪动设备摹拟器中没法一般举行表单考证,遐想到今天利用web.config设置cookieless属性时会在会见时会呈现"Cannotusealeading..toexitabovethetopdirectory"的非常,天然而然的我就想到了前一段工夫困扰我好久的一个站点非常没法利用前导..在顶级目次上加入(Cannotusealeading..toexitabovethetopdirectory)。综合一下,终究了解了为何会呈现如许的非常,也了解了为何在asp.net2.0中,将本来cookieless属性只能设置true|false,改成了能够设置列举HttpCookieMode的值,分离为:AutoDetect,UseCookies,UseDeviceProfile,UseUri。
假如对表单考证很有履历的伴侣大概会很分明,能够有两种体例来保留以后的SessionID和用户的考证票信息,分离是利用Cookie和在URL地点加上一串编码过的字符串来标识以后的SessionID和用户的考证票信息。第一种体例十分广泛,关于利用URI来标识以后SessionID和考证票,我信任假如不是特别必要的话,信任良多人城市跟我一样还没法很好了解。我做了两个复杂的页面,来摹拟用户的考证历程。当我在web.config中设置cookieless="AutoDetect"时,就跟我们寻常一样,登录的URL是:
http://localhost:1115/FormsAuthentication/Security/Default.aspx
而当我设置cookieless="UseUri"时,这时候URL地点就酿成了:
http://localhost:1115/FormsAuthentication/(F(V0-gEZNEzXUqevbOqKwNoBcMf6vBWnyNbdpa2UhZzrfOUkGPvyB91-9nFlnBDmCAgdpz4gJ6kq-QOVjbNsvKig2))/Security/Default.aspx
在站点目次多了一级目次,这里的值就是以后会用户的考证票信息和SessionID信息。在某些场所,如许做长短常成心义的(大概是必需的),由于在不撑持cookie情况下,你要往标识一个是不是属于统一个会话,以后用户是不是已考证过,等等预会话相干信息的时分就会变得非常的坚苦。
懂得了这两个保留会话信息的体例后,我们再来会商一下,asp.netteam为何把本来只能设置true|false的属性改成能够设置分歧的列举值.起首我们来看看这4个值的含义(在WindowsLiveWriter不克不及画表格:<):
AutoDetect:主动检测客户端实践是不是撑持cookie再来决意利用两种体例中的哪种(最好顺应)。
UseCookies:不论客户端是不是撑持cookie,归正都利用cookie来标识(第一种体例)。
UseDeviceProfile:依据设备文件来判别是不是撑持cookie,进而决意利用哪一种体例。信任良多人都对这个观点很含混,因为比来在研讨WAP,以是对它有一些复杂的熟悉。在<%windir%>Microsoft.NETFrameworkv2.0.50727CONFIGBrowsers目次下有良多的.browser文件,这些文件就是用来标识对应的设备(扫瞄器)的扫瞄才能(形貌不是很分明,就是一些手艺参数,是不是撑持cookieandsoon),在asp.net中,会依据这些.browser文件,静态天生从HttpBrowserCapabilities承继上去的设备参数范例,标识对应的设备的一些参数值,编程中能够经由过程Request.Browser失掉这个设备参数工具,并利用。
UseUri:与UseCookies相似的,不论客户端是不是撑持cookie,归正都利用第二种体例。
出格申明:为何出格夸大“实践”,和具体形貌UseDeviceProfile呢?次要是由于,我发明因为多是设备文件中标识的参数与对应的设备的实践其实不完整婚配,(好比,有大概设备文件中标识这类设备撑持cookie,但实践的设备却不撑持)。以是假如要依据设备的实践来选择是不是利用cookie,那就要利用AutoDetect值了。设备文件只能是做为参考,固然假如你对设备文件有充实把持前提的话那就另当别论了。并且另有一点要出格注重,AutoDetect并非默许值,UseDeviceProfile才是。
回到正题,为何要改cookieless属性的可选值呢?毫无疑问,是为了增添程序的可操控性。本来的值有点太甚单一化了,二选一,没有商议的余地。如今我们能够依据各类分歧的情形来让程序静态或程序员手动选择。分离这一段工夫的WAP开辟履历,我想如许做的一个目标就是为了能更好的兼容挪动设备,兼容WAP的使用。今朝另有良多的设备还其实不撑持cookie。
有了下面的先容后,我还想来解开为何会呈现“Cannotusealeading..toexitabovethetopdirectory”非常的迷团。头几天也有收到一个伴侣的来信,也是在利用CommunityServer2.0碰到这个成绩,(信任今朝碰到最多的就是asp.net2.0版的CommunityServer了)。今朝利用了UrlRewrite,以是我们程序的良多URL都是假的,以是假如在页面中利用了绝对路径(~/)的话,那我们就有大概碰到如许的贫苦了。由于搜刮引擎(出格是google)不撑持cookie,以是在它会见站点的时分就会利用下面提到的第二种体例来标识会话信息,这时候候URI就多了一级了,以是在这个页面下一切的链接地点都是多一个../,没法一般会见了,从而形成下面这个非常的呈现。(实在能够看出这个非常自己与UrlRewrite并没有多年夜干系,只不是communityserver和我的程序中都利用了urlrewrite)。
办理举措有三种:
1.设置cookieless=UseCookies,不论客户端是不是撑持cookie都利用cookie。
2.由于默许cookieless=UseDeviceProfile,以是能够为搜刮引擎创建一个设备文件.browser,故弄玄虚一下。《GetGoogleBottocrashyour.NET2.0site》就有给出了如许的做法了。
3.修正程序,将内里的绝对路径(~/)改成相对路径暗示(可使用Resolve办法)。
到今朝为止对cookieless的会商就算告一段落了,我发明到今朝为止中文社区仿佛还没有良多人对这一属性有过深切的会商。文中良多都是我团体综公道解,总结出来,内里大概会有良多毛病的熟悉和概念,接待人人给我斧正和增补。
完全不一样的。.net其实我也说不太清,.net可以把他理解为跟J2EE相对的工具。c++主要做系统相关的开发你要学.net的话就应该学C#。(其实微软在.NET平台上也考虑了给C++留一个地位。
莫相离 该用户已被删除
沙发
发表于 2015-1-19 23:26:24 | 只看该作者
可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
谁可相欹 该用户已被删除
板凳
发表于 2015-1-26 20:31:24 | 只看该作者
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
活着的死人 该用户已被删除
地板
发表于 2015-2-4 20:30:31 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
柔情似水 该用户已被删除
5#
发表于 2015-2-10 07:05:16 | 只看该作者
最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。
山那边是海 该用户已被删除
6#
发表于 2015-3-1 01:31:21 | 只看该作者
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
7#
发表于 2015-3-17 06:12:33 | 只看该作者
PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。
小妖女 该用户已被删除
8#
发表于 2015-3-23 23:17:03 | 只看该作者
但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 21:00

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表