我有一个ASP.Net Web应用程序,页面Home.aspx显示了一些统计信息。 主页有一个JQuery Ajax请求,用于从服务器加载仪表板统计信息。计算需要几秒钟,UI正在显示加载动画。用户决定移动到另一个页面,例如HelpDesk.aspx,并且在返回JQUERY AJAX请求之前,将不会提供请求。 Page HelpDesk.aspx是一个静态页面,没有涉及逻辑,因此在发送响应之前,服务器已经等待(除非浏览器工具愚弄我)“GetDashboardStatistics”AJAX请求,因此需要快速响应HelpDesk.aspx页面。。 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显示加载动画并决定在从服务器返回响应之前离开,如何实现此目的?
答案 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