【问题标题】:asp.net session state from non browser requests来自非浏览器请求的 asp.net 会话状态
【发布时间】:2013-07-09 21:13:15
【问题描述】:

可能是一个非常愚蠢的问题,你想在愚蠢的日子里问它。

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

现在,如果请求来自非浏览器应用程序,例如发布并检索响应的控制台应用程序,是否会发生这种情况。

假设我在母版页中设置了会话变量。任何页面访问都将导致设置此会话变量。如果以编程方式发出请求以从页面​​获取响应会发生什么?是否设置了此会话变量或控制台应用请求是否有权访问会话?

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

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

【问题讨论】:

    标签: c# asp.net session session-variables


    【解决方案1】:

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

    【讨论】:

    • 我并没有真正询问未来的请求。假设页面请求所做的事情依赖于从母版页设置的会话,那么页面是否可以访问它?或者换句话说,就会话而言,程序化请求是否会像浏览器请求一样起作用。我猜你的回答表明确实如此。
    • 如果它是通过应用程序(项目的一部分)公开的 WCF 服务怎么样。考虑到它是应用程序域的一部分,对它的请求是否可以访问会话?
    • @codernet 理论上,是的。但是,WCF 的 Session 与 ASP.NET (stackoverflow.com/a/7917843/254973) 略有不同,因此您可能需要在依赖它之前查看其他选项。
    猜你喜欢
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 2017-09-11
    相关资源
    最近更新 更多