AJAX访问长时间运行的服务的任务阻塞在ASP.NET兼容性能/会话环境子序贯AJAX服务请求(AJ

2019-07-29 13:21发布

我有描述,并在下面的链接解决的问题

http://blogs.msdn.com/b/silverlightws/archive/2009/09/30/having-a-pollingduplex-service-and-any-other-wcf-service-in-the-same-website-causes- Silverlight的通话将要-slow.aspx

......不过,因为我使用JavaScript和Silverlight的不是我不能用推荐的解决方案(使用客户端HTTP堆栈)!

POST /PollingWcfServices/ServiceWcf.svc HTTP/1.1
Accept: */*
Content-Length: 564
Content-Type: application/soap+xml; charset=utf-8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0
Host: foo
Connection: Keep-Alive
Pragma: no-cache
Cookie: ASP.NET_SessionId=iyr4sf55rm1kypafjdvlhm55

下面轮询代码用于

  request.onreadystatechange = function () {
            if (request.readyState == 4) {
                if (request.status == 200)
                    //Process and Poll again
                else
                    //Handle errors
            }

  request.open("POST", url);            
  request.setRequestHeader("Content-Type", "application/soap+xml;charset=utf-8");
  request.send(httpBody);

不幸的是,因为会议是在cookie设置,服务器将尝试和处理同一个会话服务调用顺序。 这是长期调查过程中一个很大的问题。 一个简单的解决办法是从头部取出饼干,使它看起来像使用Silverlight客户端堆栈一个Silverlight调查。

request.setRequestHeader,将只追加到标头值; 这似乎并没有任何区别,因为该cookie似乎就在。发送头进行设置。

Mozilla的唯一的解决方案,在发现

http://www.michael-noll.com/tutorials/cookie-monster-for-xmlhttprequest/

request.channel.loadFlags |= Ci.nsIRequest.LOAD_ANONYMOUS;

不SEM要么删除ASP.NET_SessionID饼干。 虽然它删除A​​SPXAUTH饼干。

有没有人有没有阻止子序贯AJAX服务请求中启用了环境中的ASP.NET兼容性/会话AJAX访问长时间运行的服务任务的解决方案吗?

Answer 1:

答案就在这里...

在.NET 4中,你可以做的Application_BeginRequest这

如果(Context.Request.Path.EndsWith( “xxx.svc”))Context.SetSessionStateBehavior(SessionStateBehavior.ReadOnly);

- 如何强制IIS承载的WCF或ASMX [Web服务]以只读使用session对象?

通过改变回调服务的SessionStateBehavior,我能够隔离此服务来运行非顺序并停止封锁。

由于电影( https://stackoverflow.com/users/264022/cine )



文章来源: AJAX accessible long running service tasks blocking sub-sequent AJAX service requests in an ASP.NET Compatibility/Sessions enabled environment