我知道我不应该这样离开并让按钮无法点击并发出一条消息“请稍候”但我只是对那种情况会发生什么感兴趣。
抱歉英文不好! 谢谢!
答案 0 :(得分:2)
从技术角度看这个答案:Problem with IHttpAsyncHandler and ASP.NET "Requests Executing" counter。
你有很多问题:
如果请求尚未完成且用户看到没有发生任何事情再次点击按钮并一次又一次?
在这种情况下,多个请求将在您的Web服务器上排队,并且它们都将被处理。这会影响性能。正如您所提到的,您的UI应该通过禁用按钮并向用户提供正在处理请求的一些反馈来阻止这种情况。
我的网络应用程序和数据库中会发生什么?在抛出另一个请求之前是否要等待先前的请求完成?
没有。除非您锁定数据库中的单个资源,否则每个请求都将由IIS中的单独工作程序处理。并发请求的数量有限制,但通常情况会并行发生。如果您正在进行的工作是CPU密集型的,则可能存在一些CPU资源争用,并且整体性能将受到影响。你一定要查看AsyncHandler模型。
每个会话是否接受多个请求?
是
我的网络应用程序是否会冻结?
冻结可能是错误的词。如果请求以比Web服务器可以实现的速度更快的速率进入,则请求队列可能会变大。如果发生这种情况,用户会发现您的网络服务器没有响应或速度很慢。
我的数据库是否会同时从同一个用户执行多个sql请求?
可能。
我的sql server会冻结吗?
与上述相同。如果您的SQL Server无法以比进入更快的速度处理请求,那么您的用户可能会觉得您的应用程序没有响应。