我有一个使用 ASP.NET 会话状态的 WCF Web 服务。 WCF 为每个请求在会话上设置读写锁。这意味着我的 Web 服务每次只能处理每个用户一个请求,这会损害我们 AJAX 应用程序的感知性能。
所以我正在尝试找到一种方法来绕过这个限制。
- WCF 不支持使用只读锁(允许并发访问会话)。
- 我还没有找到在处理请求期间手动释放读写锁的方法
- 所以现在我在想可能有某种方法可以将读写锁超时设置为一些非常短的间隔,以便等待请求不需要等待很长时间。请参阅下面的粗体部分。
来自 MSDN:http://msdn.microsoft.com/en-us/library/ms178581.aspx
“如果对同一会话发出两个并发请求,则第一个请求将独占访问会话信息。第二个请求仅在第一个请求完成后执行。(如果由于第一个请求超过锁定超时而释放了信息上的独占锁,则第二个会话也可以获得访问权限。)如果 @ Page 指令中的 EnableSessionState 值设置为 ReadOnly,则对只读会话信息的请求不会导致对会话数据的独占锁定。”
...但我还没有找到任何有关此锁定超时时间是多长时间或如何更改它的信息。
我可以告诉你 httpRuntime 执行超时控制这个锁定时间,但是,该字段的文档指出此时应该终止线程。根据经验我知道这个线程不会终止并且最终会返回数据,但是会生成一个新线程来处理队列中的请求。
默认情况下,该值在 2.0 asp 之后为 110 秒,在此之前为 90 秒。我担心这种行为将来会发生变化并被“修复”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)