Session 保持webapi调用之间的状态

Session 保持webapi调用之间的状态,session,asp.net-web-api,Session,Asp.net Web Api,我只需要在会话中通过web api向用户发送一次信息,我以前在asmx中通过在会话中存储一个变量来做到这一点 正如在web api中,我不能使用会话,我如何才能做到这一点?一开始只是一个注释,但最后太长了 ASP.NET Web API主要用于创建HTTP服务,正如Microsoft声称的那样,ASP.NET Web API是在.NET Framework上构建RESTful应用程序的理想平台。这样的服务是无状态的,所以您试图做的是在技术上违背一个非常基本的设计目标。话虽如此,事情并不像看上去那

我只需要在会话中通过web api向用户发送一次信息,我以前在asmx中通过在会话中存储一个变量来做到这一点


正如在web api中,我不能使用会话,我如何才能做到这一点?

一开始只是一个注释,但最后太长了

ASP.NET Web API主要用于创建HTTP服务,正如Microsoft声称的那样,ASP.NET Web API是在.NET Framework上构建RESTful应用程序的理想平台。这样的服务是无状态的,所以您试图做的是在技术上违背一个非常基本的设计目标。话虽如此,事情并不像看上去那么明确,关于REST服务应该是无国籍的还是在某种程度上允许州政府存在一些(几乎是宗教性的)争论

以下问题可能会为您提供一些帮助和/或方向,以实现您的目标:

此外,下面的StrathWeb文章还提供了一些附加建议(带有代码示例)以及指向其他信息源的链接:


在我目前正在进行的一个项目中,我必须为基于令牌的用户身份验证存储一些状态信息,因为我可以访问数据库,所以我使用一个表来存储我需要的信息。从技术上讲,当然对某些人来说,我正在违反规则。但这对我来说很有效,而且,在一天结束时,你有一份工作要做,你可能没有时间100%正确地做事情,所以你的方法必须务实。

一开始只是一个评论,但结果太长了

ASP.NET Web API主要用于创建HTTP服务,正如Microsoft声称的那样,ASP.NET Web API是在.NET Framework上构建RESTful应用程序的理想平台。这样的服务是无状态的,所以您试图做的是在技术上违背一个非常基本的设计目标。话虽如此,事情并不像看上去那么明确,关于REST服务应该是无国籍的还是在某种程度上允许州政府存在一些(几乎是宗教性的)争论

以下问题可能会为您提供一些帮助和/或方向,以实现您的目标:

此外,下面的StrathWeb文章还提供了一些附加建议(带有代码示例)以及指向其他信息源的链接:


在我目前正在进行的一个项目中,我必须为基于令牌的用户身份验证存储一些状态信息,因为我可以访问数据库,所以我使用一个表来存储我需要的信息。从技术上讲,当然对某些人来说,我正在违反规则。但这对我来说是可行的,而且,在一天结束时,你有一项工作要做,你可能并不总是有时间100%正确地做事情,所以你必须在你的方法上务实。

我知道webapi是用于restful服务的,所以会话不必处理。。。但是,当您必须确保相同的数据不会在同一会话中发送两次时,那么,您必须在某处保持状态;最后我使用了会话。但也许有更好的方法来实现这一点?StrathWeb的最后一个链接提供了一个代码示例,说明如何启用类似于MVC的会话支持,因此您应该明确研究它。或者,如果您可以访问数据库,您可以添加一个“会话”表,并针对用户记录会话,可能还需要在会话中保留过期日期/时间等内容。最后,如果您不关心服务器重新启动之间的持久性,您可以使用应用程序范围的集合对象来实现这一点,尽管如果您有数千个会话,这不是一个好主意,因为整个过程需要大量内存。我的评论不清楚,我在我的Web服务中启用了会话。如果唯一的解决方案是将数据保存在一个专用的表中,我肯定会使用会话。我知道webapi是用于restful服务的,因此不必处理会话。。。但是,当您必须确保相同的数据不会在同一会话中发送两次时,那么,您必须在某处保持状态;最后我使用了会话。但也许有更好的方法来实现这一点?StrathWeb的最后一个链接提供了一个代码示例,说明如何启用类似于MVC的会话支持,因此您应该明确研究它。或者,如果您可以访问数据库,您可以添加一个“会话”表,并针对用户记录会话,可能还需要在会话中保留过期日期/时间等内容。最后,如果您不关心服务器重新启动之间的持久性,您可以使用应用程序范围的集合对象来实现这一点,尽管如果您有数千个会话,这不是一个好主意,因为整个过程需要大量内存。我的评论不清楚,我在我的Web服务中启用了会话。如果唯一的解决方案是将数据保存在专用表中,那么我肯定会使用会话。