2013-07-11 46 views
2

可能是一个非常愚蠢的问题,你觉得在愚蠢的日子问。asp.net会话状态从非浏览器请求

用户通过浏览器访问ASP.net应用程序中的网页。会话状态(和ID)在服务器上建立(在proc,db whatever中)。很基本。

现在,如果请求源自非浏览器应用程序,例如执行帖子并检索响应的控制台应用程序,是否会发生这种情况?

可以说我有一个会话变量设置在母版页中。任何页面访问都将导致设置此会话变量。如果以编程方式发布请求以获取页面响应,会发生什么情况?此会话变量是否设置,或者控制台应用程序请求是否可以访问会话?

根据MSDN,我假设它只适用于浏览器请求?

ASP.NET会话状态使您能够在用户在Web应用程序中导航ASP.NET页面时为用户存储和检索值。 HTTP是一种无状态协议。这意味着Web服务器将每个HTTP请求作为独立请求处理。服务器不知道以前请求期间使用的变量值。 ASP.NET会话状态在有限的时间窗口内将来自同一浏览器的请求标识为会话,并提供一种在该会话持续时间内保存变量值的方法。默认情况下,为所有ASP.NET应用程序启用ASP.NET会话状态。

回答

2

如果我理解正确,控制台应用程序将发送HTTP POST到Web服务器。如果是这种情况,那么您的控制台应用程序就像一个Web浏览器,并且会话被初始化。但ASP.NET通常使用Cookie发送会话ID,因此浏览器(或控制台应用程序)必须存储该cookie以在将来的HTTP请求中继续会话到同一HTTP服务器。

+0

我并不是在问未来的要求。假如页面请求正在做的事情取决于从母版页设置的会话,页面是否可以访问它?或者换言之,就会话而言,编程请求的行为就像浏览器请求一样。我想你的答案表明它的确如此。 –

+0

@codernet确实如此。 –

+0

如果它是通过应用程序公开的WCF服务(项目的一部分),那该怎么办。考虑到它是应用程序域的一部分,它的请求是否可以访问会话? –