我需要一些澄清.我一直在阅读有关REST和构建RESTful应用程序的内容.根据维基百科,REST本身被定义为具象状态转移.因此,我不理解每个人都在喷涌的所有这种无国籍的gobbledeygook.
来自维基百科:
在任何特定时间,客户端可以在应用程序状态之间转换或"静止".处于休眠状态的客户端能够与其用户进行交互,但不会创建任何负载,并且不会在服务器集或网络上消耗每个客户端存储.
他们只是说不使用会话/应用程序级数据存储???
我知道REST的一个目标是使URI访问一致且可用,例如,而不是在帖子中隐藏分页请求,使请求的页码成为GET URI的一部分.我感觉合理.但似乎只是过分夸大说每个客户端数据(会话数据)都不应该存储在服务器端.
如果我有一个消息队列,并且我的用户想要阅读消息,但是当他阅读它们时,想要阻止某些发送者在其会话期间发出的消息,该怎么办?将它存储在服务器端的某个位置并让服务器只发送未被用户阻止的消息(或消息ID)是不是有意义的?
每次请求新邮件列表时,是否真的必须发送整个邮件发件人列表?与我相关的消息列表首先不会/不应该是公开可用的资源.
再次,只是想了解这一点.有人请澄清一下.
更新:
我发现了一个堆栈溢出问题,其答案并不能完全解决这个问题: 如何在REST 中管理状态,该状态表明重要的客户端状态应该在每次请求时都被转移.... Ugg ..似乎很多开销......这是对的吗?
ASP.NET中的SessionState和ViewState有什么区别?
Session.Clear()和Session.Abandon()都摆脱了会话变量.据我了解,Abandon()结束当前会话,并导致创建一个新会话,从而导致End和Start事件被触发.
在大多数情况下,最好调用Abandon(),例如将用户注销.有没有我使用Clear()的情况?是否存在很大的性能差异?
我们的网站目前有这个问题.基本上它只发生在我们点击某个特定链接时会弹出一个新窗口.
这是我们收到的错误消息:
无法向会话状态服务器发出会话状态请求.
请确保已启动ASP.NET状态服务,并且客户端和服务器端口是相同的.
如果服务器位于远程计算机上,请通过检查HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection的值来确保它接受远程请求.
如果服务器位于本地计算机上,并且前面提到的注册表值不存在或设置为0,则状态服务器连接字符串必须使用"localhost"或"127.0.0.1"作为服务器名称.
目标站点:
Void MakeRequest(StateProtocolVerb,System.String,StateProtocolExclusive,Int32,Int32,Int32,Byte [],Int32,Int32,SessionNDMakeRequestResults ByRef)
这是包含sessionstate标记的webconfig:
<sessionState mode="StateServer" timeout="45" />
我检查了ASP.NET状态服务,它当前已启动并设置为自动
我已将错误消息中指定的注册表设置为1,但仍无法正常工作.
我真的可以从我的HTTPModule中更新用户的会话变量,但从我所看到的,它是不可能的.
更新:我的代码当前正在OnBeginRequest ()事件处理程序中运行.
更新:根据目前为止收到的建议,我尝试将其添加到Init ()我的HTTPModule例程中:
AddHandler context.PreRequestHandlerExecute, AddressOf OnPreRequestHandlerExecute
但在我的OnPreRequestHandlerExecute日常工作中,会话状态仍然不可用!
谢谢,如果我错过了什么,道歉!
我想有一个非常轻量级的ASP.NET MVC站点,其中包括尽可能多地删除常用的HttpModule并禁用会话状态.但是,当我尝试这样做时,我收到以下错误:
The SessionStateTempDataProvider requires SessionState to be enabled.
我在web.config中禁用了会话状态:
<sessionState mode="Off" />
Run Code Online (Sandbox Code Playgroud)
我知道ASP.NET MVC使用TempData的会话状态,但我不需要/想要TempData - 我只是想禁用会话状态.救命!
我间歇性地犯了这个错误.
我发现此链接很好地总结了我在Google上能够找到的内容:http: //www.wacdesigns.com/2009/02/03/session-state-has-created-a-session-id-but-不能保存,它-因为最响应是,已经刷新由这应用程序/
基本上它表示您可以尝试设置Web配置设置DisplayWhenNewSession,或者尝试通过在Session_OnStart中获取Session.SessionID来将会话状态事物投入生活.
但有人:
a)对此有一个解释
或者甚至更好,b)有一个久经考验的修复
我意识到在做任何会影响http响应头的事情之后我无法刷新响应.如果我这样做会导致每次都出错,但这是间歇性的.SessionID肯定是由ASP.NET在页面响应开始时自动创建的,在ASPX页面或Page_Load(调用所有刷新的地方)之前.
更新: 反思我发现将文件流式传输到浏览器时会发生这种情况.大多数浏览器实际上都是搜索引擎机器人.我可以通过开始下载然后关闭浏览器来重新创建此错误,因此可能是浏览器在取消下载操作之前没有等待下载完成.我也在其他正常页面上看过这个,但99%的时间是下载页面.
PHP中的Sessions和Cookies有什么区别?
我在ASP.NET MVC中看到了两种使用会话数据的方法:
System.Web.SessionState.HttpSessionState,可用 HttpApplicationSystem.Web.HttpSessionStateBase,可用 Controller存储在一个中的数据似乎在另一个中可用.
不幸的是System.Object,这两种类型的唯一共同祖先是,这意味着我不能为任何一种抽象创建可重用的实用程序代码.
为什么API会这样?我失踪的两者之间是否有重要区别?
我有一个在客户端页面(跨域,而不是我们的IIS服务器等)上运行的HttpHandler,当他们点击我们的嵌入式链接时,它会触发我们服务器上的Handler.到目前为止一切正常.
我现在正在尝试使用System.Web.HttpContext.Session对象,但它为null.我认为它是null,因为我们在调用HttpHandler之前没有会话?多次调用处理程序会在每次调用时创建一个新会话?如果是这种情况,MS只是在调用HttpHandler时禁用了Session对象吗?谁能证实这一点?
如果是这种情况,您如何维持呼叫之间的状态?某种基于SQL的数据对象?一份文件?
TIA
session-state ×10
asp.net ×6
.net ×2
session ×2
asp.net-mvc ×1
cookies ×1
httphandler ×1
httpmodule ×1
php ×1
rest ×1
stateserver ×1
tempdata ×1
viewstate ×1