问题描述
页面通过jquery的ajax方式发送十多个异步来请问另一台服务器中的一个ashx页面出现阻塞的情况,需要等待上一个请求完成,才会执行下一个。请问可以通过什么方式外理
解决方案
解决方案二:
你的程序中有没有导致阻塞的代码?按理说不会
解决方案三:
IRequiresSessionState,IReadOnlySessionState的区别,如果你是MVC,那就需要在Control上加[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]以指示Session是只读的,防止Session阻塞
解决方案四:
ashx默认是单线程(为了保证线程安全)如果你一定要实现多线程的话可以自己实现IHttpHandlerFactory
解决方案五:
没有用到session每一个请求处理要一两分钟的时间。
解决方案六:
引用楼主aijun12的回复:
页面通过jquery的ajax方式发送十多个异步来请问另一台服务器中的一个ashx页面出现阻塞的情况,需要等待上一个请求完成,才会执行下一个。请问可以通过什么方式外理
你用的是单线程吧?
解决方案七:
ashx这个页面是单线程
解决方案八:
引用6楼aijun12的回复:
ashx这个页面是单线程
请看二楼……
解决方案九:
我没有使用到session也试着实现了继承了IReadOnlySessionState还是不行
解决方案十:
贴你handler命名空间和类声明部分
解决方案十一:
publicclassTest:IHttpHandler,IReadOnlySessionState{publicvoidProcessRequest(HttpContextcontext){stringdomainName=HttpContext.Current.Request["domainName"];stringischina=HttpContext.Current.Request["ischina"];//此处代码执行要1分种左右HttpContext.Current.Response.Write("开始");}
解决方案十二:
这样写不可能出现阻塞的啊,是不是你调用的方法内部有lock阻塞了……
解决方案十三:
确认你没有使用session之类会独占资源的东西(你自定义的操作中有锁表锁文件的都算)再打开一个浏览器访问相同的ashx看是否有阻塞现象(首次ajax)如有,则是有独占现象,也可能是外部控件不支持并发如没有,则应判定为session的影响
解决方案十四:
里面没有阻塞,只是这里调用别人的api
解决方案十五:
那就是别人的api有阻塞吧……
解决方案:
利用多线程来处理
解决方案:
用tread吗,这样会不会创建太多的线程了
解决方案:
不会的,用完之后释放。