HttpContext.Current.Session为null请求图像。为什么?

时间:2011-05-12 12:13:10

标签: asp.net asp.net-mvc asp.net-mvc-2 asp.net-mvc-3

我正在构建一个ASP MVC应用程序。

当我请求到控制器的路由时,例如:

http://myserver/sales/id/5

会话对象HttpContext.Current.Session工作正常。

但是,当我请求图像或脚本时,例如:

http://myserver/Scripts/jquery-1.4.1.js

会话对象HttpContext.Current.Sessionnull

如果没有“真实”会话(例如首次登录),我如何区分这种情况?

2 个答案:

答案 0 :(得分:4)

为什么需要一个会话来检索静态文件?

除非您使用动态处理程序,否则完全不需要会话来检索此类内容。

我的观点是,会话对于检索静态内容没有任何用处,因此它不可用。

答案 1 :(得分:2)

@Oded是对的,这是asp.net中的优化。如果您需要会话可用,那么您将需要请求转到已指示它需要会话的处理程序。如果您正在编写自己的处理程序,那么它只需要实现标记接口IRequiresSessionState

此优化不仅适用于当前请求,而且您作为使用相同会话的多个请求所做的任何并行请求都以串行方式处理。请阅读我的blog post了解更多信息。