在asp.net中使用静态类和方法代替会话

在asp.net中使用静态类和方法代替会话,asp.net,Asp.net,在我的webapplication中,会话用于业务层,而此业务层(DLL)用于移动应用程序。我可以使用静态类和方法从业务层删除此会话吗?最好将会话中需要的相关字段注入到业务层。将数据存储在静态成员中而不是会话中会产生非常不同的结果。web应用程序中的会话通过会话cookie绑定到远程用户。换句话说,每个用户(使用不同的cookie)将有一个单独的会话。另一方面,类的静态成员对于web应用程序的所有远程用户都是相同的。如果你考虑网络农场、网络花园和应用程序域,它会变得更加复杂,但一般原则是相同的。

在我的webapplication中,会话用于业务层,而此业务层(DLL)用于移动应用程序。我可以使用静态类和方法从业务层删除此会话吗?

最好将会话中需要的相关字段注入到业务层。

将数据存储在静态成员中而不是会话中会产生非常不同的结果。web应用程序中的会话通过会话cookie绑定到远程用户。换句话说,每个用户(使用不同的cookie)将有一个单独的会话。另一方面,类的静态成员对于web应用程序的所有远程用户都是相同的。如果你考虑网络农场、网络花园和应用程序域,它会变得更加复杂,但一般原则是相同的。
如果数据对每个用户来说都是唯一的,那么会话(或数据库等其他位置)就是存储数据的正确位置。如果所有用户的数据都相同,则使用静态成员可能没问题,但请注意当两个或多个用户同时尝试更新数据时会出现问题。

如果使用静态,用户将覆盖彼此的值。这就是为什么会话状态首先被创建(除了缓存等…),因为它只是为特定用户隔离的。在web中使用静态是一个坏主意,尤其是在处理多个用户时(web应用程序上的要点也是同时处理多个用户!)

您还说您正在业务逻辑中使用会话吗?我已经觉得不太对劲了。。。业务层应该是完全独立的,并且不应该有权访问会话,因为会话是一个仅限web层的可访问性。似乎您的体系结构也不正确。

公共静态词典FlightDict;添加(“I_ShoppingClient”,客户);在这种情况下,用户将覆盖其值?这有什么问题吗?