如何强制IIS托管的WCF或ASMX [webservice]只读取会话对象?

mab*_*bra 7 iis session wcf readonly

在进行我的第一次ajax尝试时,我还决定立即使用IIS托管的WCF.奇怪的是,如果启用了sessionmode,WCF无法并行处理同一个用户/会话的多个请求!如果在asp.net上禁用sessionmode,则会并行处理请求.更明亮/客户端可以执行几个不同的请求,其中一些请求长时间运行.这将阻止所有进一步的requets并使我的ajax应用程序无法使用.

这也适用于asmx [webservices].我有一个很大的希望,就是使用"IReadOnlySessionState"接口来编译web服务方法,但这对于网页的反对 - 没有影响力.但是我需要[大多数时候只读取]访问asp.net会话!

有人知道这个问题的任何解决方案.

无论如何,非常感谢!

BR - mabra

Cin*_*ine 15

在.NET 4中,您可以执行此操作 Application_BeginRequest

if (Context.Request.Path.EndsWith("xxx.svc"))
   Context.SetSessionStateBehavior(SessionStateBehavior.ReadOnly);
Run Code Online (Sandbox Code Playgroud)


Ash*_*tch 0

我找到了这个:

http://blogs.msdn.com/silverlightws/archive/2009/09/30/having-a-pollingduplex-service-and-any-other-wcf-service-in-the-same-website-causes-silverlight-呼叫变慢.aspx

其中指出,

“如果启用 ASP.Net 会话,所有 WCF 服务都需要读/写会话状态访问,这会导致回复按顺序排队。理想情况下,用户应该能够将 WCF 处理程序配置为只读,这将允许轮询双工服务正常工作与会话。不幸的是,目前尚不支持这一点。”

...我唯一能想到的是是否有某种方法可以手动强制提前释放锁。我现在正在调查此事。