7

在进行第一次 ajax 尝试时,我也决定现在使用 IIS 托管的 WCF。奇怪的是,如果启用了会话模式,WCF 无法为同一个用户/会话并行处理多个请求!如果在 asp.net 上禁用了 sessionmode,则并行处理请求。broser/client 可能会执行几个不同的请求,其中一些请求是长时间运行的。这会阻止所有进一步的请求并使我的 ajax 应用程序无法使用。

这也适用于 asmx [webservices]。我有很大的希望,使用“IReadOnlySessionState”接口编译 web 服务方法,但这 - 在网页的对立面 - 没有影响。但我需要访问 [大多数时候只读] 到 asp.net 会话!

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

无论如何,非常感谢!

br--马布拉

4

3 回答 3

15

在 .NET 4 中,您可以在Application_BeginRequest

if (Context.Request.Path.EndsWith("xxx.svc"))
   Context.SetSessionStateBehavior(SessionStateBehavior.ReadOnly);
于 2011-10-21T12:03:17.317 回答
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- call-to-be-slow.aspx

其中指出,

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

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

于 2010-02-04T05:36:34.607 回答
0

您可以提供自定义会话状态提供程序

见: http: //koolsand.blogspot.com/2010/02/why-iis-hosted-wcf-services-does-not.html

每当请求在路径中包含 svc 时,它都会提示默认会话状态提供程序使用只读锁而不是读写锁。所以使用只读锁将允许下一个 wcf 调用同时执行。

于 2010-11-08T16:42:58.903 回答