金色的骷髅 发表于 2015-1-18 11:20:54

ASP.NET网站制作之ASP.NET4中不要信任Request.Browser.Cookies,Form考证要用UseCookies仓酷云 ...

如果需要重新编写代码,几乎任何一门计算机语言都可以跨平台了,还用得着net网页编程嘛,而且像PHP/C#等语言不需要修改代码都可以跨Windows/Linux。从ASP.NET3.5晋级至ASP.NET4以后,碰到三种登录后不克不及保留cookie的情形(晋级前统统一般):
1.游览3在极速形式下(默许形式)。
2.FireFox中修正了UserAgent。
3.诺基亚手机自带扫瞄器大概UCWeb扫瞄器会见博客园手机版(m.cnblogs.com)。
明天终究把祸首罪魁给揪出来了,它就是Request.Browser.Cookies。
假如你在程序中利用Form考证并利用cookie保留用户的登录形态,请牢记:在<authenticationmode="Forms">/<forms>中要加上cookieless="UseCookies"。假如不如许设置的话,cookieless会利用默许值UseDeviceProfile。用了UseDeviceProfile,喜剧就产生了,ASP.NET会依据Request.Browser.Cookies来判别以后扫瞄器是不是撑持Cookie(如若不信,请用Reflector检察System.Web.Security.FormsAuthentication的代码)。而Request.Browser.Cookies会以为下面的三种情形不撑持cookie(大概另有更多误判的情形)。
而在ASP.NET3.5及ASP.NET2.0不存在如许的误判。不信的话,人人用上面的代码考证一下:
Response.Write(Request.Browser.Cookies);
用游览3在极速形式下会见,如果ASP.NET4,则显现False;如果ASP.NET3.5,则显现True。
原本筹办写到这里就停止,可是在写的过程当中,以为不宁愿,被这个折腾的差点溃散,必定要看个事实,ASP.NET4凭甚么以为游览3不撑持cookie。
1)先用上面的代码看一下ASP.NET4把游览3当做甚么扫瞄器:
Response.Write(Request.Browser.Browser);
谜底是:Safari
岂非微软在这里弄了小把戏,只需是Safari,存心以为它不撑持cookie。
用正宗的Safari测试了一下,Request.Browser.Cookies前往True。冤枉微软了,微软也不会这么小家子气。
2)再用Request.UserAgent看一下游览3的UserAgent:
了局是:Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN)AppleWebKit/533.9(KHTML,likeGecko)Maxthon/3.0Safari/533.9
双核扫瞄器是公然分歧反应。岂非是庞大的UserAgent让ASP.NET4很末路火:谁家的扫瞄器这么庞大,爽性判断你不撑持cookie。
3)接上去是关头的一步,找出ASP.NET4依据甚么判别以后扫瞄器是不是撑持cookie?能够断定的是,不是抛硬币抛出来的。
用Reflector看源代码,看得头昏眼花,也没找到谜底。算了,那就用杀手锏——推测法。嘿嘿,这招居然管用。
本来ASP.NET4是依据上面的文件夹中的数据举行判别的:
C:WindowsMicrosoft.NETFrameworkv4.0.30319ConfigBrowsers
翻开这个文件夹一看:

长远一亮,刻不容缓地翻开safari.browser:

呵呵,本来原形躲在这里。略微剖析一下这个文件,就可以晓得:
游览3婚配的是第一项(也就是<browserid="Safari"parentID="Mozilla">部分),这项设置中没有设置cookies=true。
而正宗的Safari不但婚配了第一项,还婚配了第二项,(也就是<browserid="Safari3to4"parentID="Safari">部分)这里设置了<capabilityname="cookies"value="true"/>。
公然是游览3“假充”他人家的扫瞄器酿成的,微软没想到会呈现如许的的UserAgent。
找到原形,成绩就简单办理了。入手下手觉得只需在第一项中加<capabilityname="cookies"value="true"/>就好了,但没这么复杂:
1.safari.browser文件修正不克不及保留,提醒说是只读文件。办理办法是:将safari.browser复制到其他中央,改好后,再复制返来,掩盖现有文件。
2.要以办理员身份运转上面的命令将这些.browser文件编译成程序集并安装到GAC中:
C:WindowsMicrosoft.NETFrameworkv4.0.30319aspnet_regbrowsers.exe&ndash;i

弄定!终究水落石出,不枉一场折腾。
假如不写这篇漫笔,大概加上cookieless="UseCookies"就完事,不会有接上去的深切研讨。
当你有一个劳绩,经由过程博客写出来以后,不但加深了这个劳绩,良多时分你还会成心外的劳绩...
我有个同学,他是搞net网页编程的,他给我说“net网页编程不是效率低,而是速度慢。”,我不是搞net网页编程的,我实在想不透这句话的含义,难道执行速度不就是效率低吗?难道执行速度慢还成效率高了?

金色的骷髅 发表于 2015-1-18 14:40:12

在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?

小妖女 发表于 2015-1-22 07:01:16

ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。

山那边是海 发表于 2015-1-25 22:40:46

ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。

活着的死人 发表于 2015-1-26 11:50:40

在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的

若相依 发表于 2015-2-4 13:54:55

PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。

分手快乐 发表于 2015-2-6 15:39:56

Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。

再现理想 发表于 2015-2-16 22:14:28

asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!

因胸联盟 发表于 2015-3-3 10:15:25

网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!

透明 发表于 2015-3-11 09:55:13

主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。

只想知道 发表于 2015-3-13 05:09:56

我的意思是.net好用,从功能上来说比JAVA强还是很明显的。

灵魂腐蚀 发表于 2015-3-20 13:34:02

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
页: [1]
查看完整版本: ASP.NET网站制作之ASP.NET4中不要信任Request.Browser.Cookies,Form考证要用UseCookies仓酷云 ...