IIS服务器等待服务调用而不是提供下一个请求

时间:2016-01-03 22:53:01

标签: asp.net ajax xmlhttprequest iis-8 http-redirect

我有一个ASP.Net Web应用程序,页面Home.aspx显示了一些统计信息。 Home Page Request主页有一个JQuery Ajax请求,用于从服务器加载仪表板统计信息。计算需要几秒钟,UI正在显示加载动画。用户决定移动到另一个页面,例如HelpDesk.aspx,并且在返回JQUERY AJAX请求之前,将不会提供请求。 XHR Request and next page request Page HelpDesk.aspx是一个静态页面,没有涉及逻辑,因此在发送响应之前,服务器已经等待(除非浏览器工具愚弄我)“GetDashboardStatistics”AJAX请求,因此需要快速响应HelpDesk.aspx页面。HomePageCode。 Web服务代码如下

    [ServiceContract(Namespace = "http://XYZ/XYZService")]
        [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
        public class XYZService{

        [WebInvoke(Method = "POST",  RequestFormat = WebMessageFormat.Json,
                  BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json)]
        public DashboardStatisticsDTO[] GetDashboardStatistics(DashboardStatisticsRequestDTO dashboardStatisticsRequest)
        {
            var list = new List<DashboardStatisticsDTO>();
//Use Session Information to identify the user
                   //business logic to load the entity collection
             return list.ToArray();
        }

        }

我需要什么:有没有办法可以立即强制重定向而不是等待服务器完成并返回响应?即用户点击Home显示加载动画并决定在从服务器返回响应之前离开,如何实现此目的?

1 个答案:

答案 0 :(得分:0)

看起来问题与每当WCF服务必须在图片中使用Context信息时阻止AJAX调用一样。

最后,我在 Global.asx.cs 中使用了以下代码来解决问题。

protected void Application_BeginRequest(object sender, EventArgs e)
    {   
        if (Request != null && !string.IsNullOrEmpty(Request.Path))
        {
            if (Request.Path.Contains(@".svc/"))
            {
                Context.SetSessionStateBehavior(SessionStateBehavior.ReadOnly);
            }
        }
    }

对此问题的广泛搜索发现,已经发布了类似的问题,其中一些是: Question1 | Question2 和MSDN博客: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-calls-to-be-slow.aspx