.NET HttpSessionState案例不敏感
使用“InProc”存储的.NET的HttpSessionState似乎将会话变量键值视为不区分大小写。例如:
session["foo"] = 1; session["Foo"] = 2; Trace.Write(session["foo"].ToString()); // => 2 这个行为似乎没有文档,所以我想知道它是否只是底层会话存储机制的副作用,或者是由类本身有意实现的。 解决方法
HttpSessionState的密钥不区分大小写,以匹配经典ASP Session对象的行为。这使得开发人员更容易将ASP应用程序移植到ASP.NET中,而不会引入细微的区分大小写的问题。
QueryString,Cookies等对象和其他类似于Classic-ASP的内置对象都是相同的不区分大小写的关键字。 ASP.NET正在设计时,我正在微软的IIS团队工作,ASP.NET尽可能地将ASP.NET代码向后兼容到ASP。这并不意味着ASP.NET具有完美的向后兼容性,但每当一个决定出现(像这种区分大小写)时,默认的答案就是匹配经典ASP行为,除非有一个很好的理由。 也就是说,我同意会议的案例不敏感性可以更好地记录在案。 BTW,ASP.NET会话集合从NameObjectCollectionBase获取其案例行为,它是Cookie,会话状态,应用程序状态,标题等的所有ASP.NET内置对象的基类。从文档:
一个合理的后续问题是:为什么经典的ASP设计具有不区分大小写的键?这样做的原因是,在1996年(或周围),ASP使用的主要语言是VBScript,所以有意义的是满足对VB开发人员的不区分大小写的期望。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 在IIS中启用内容过期可能有什么缺点?
- ASP.NET服务器端或客户端的验证控件?
- asp.net – IIS 7.5中的Windows身份验证因信任关系异常而失
- asp.net-mvc – mvc4future无法在ASP.NET MVC 5中使用
- asp.net-web-api – 在ODataConventionModelBuilder中设置数
- asp.net-mvc – ASP.NET MVC FluentValidation PartialView
- 如何在ASP.NET中动态添加文本框?
- asp.net core视图中使用Json序列化模型
- asp.net-mvc – 在VS 2015中添加视图上下文菜单非常慢
- asp.net-mvc – 在Asp.Net MVC 2中有一种更好的方法来返回4