据我所知,为了让ASP.Net处理程序支持会话状态,您需要同时实现IHttpHandler
和IRequireSessionState
,但为什么默认情况下不提供会话状态?如果出于性能原因,那么拥有像IDoesNotRequireSessionState
?
答案 0 :(得分:1)
因为会话阻止了异步操作,并且句柄通常用于长时间操作,例如制作和下载文件 - 如果你长时间操作会话就会阻止你的其余页面。
此句柄的构思还包括获得回复所需的最低要求。
关于会话锁定:
Web app blocked while processing another web app on sharing same session
jQuery Ajax calls to web service seem to be synchronous
ASP.NET Server does not process pages asynchronously
Replacing ASP.Net's session entirely
答案 1 :(得分:1)
如果出于性能原因,那么拥有一个是不是更好 接口如IDoesNotRequireSessionState?
绝对不是,因为那时实现处理程序的每个人都必须知道这个接口的存在。从ASP.NET可能获得的性能来看,HTTP处理程序是最快的。因此,如果你想用像crap这样的会话污染它,你最好明确地做,并通过实现你应该知道的一些接口来完全负责这样做。