gpt4 book ai didi

ajax - asp.net mvc 4 Controller 并行执行多个 ajax 调用

转载 作者:行者123 更新时间:2023-12-04 03:12:19 24 4
gpt4 key购买 nike

我有一个 asp.net MVC 4 Controller ,它的方法是通过 ajax 调用的。
问题是 ajax 请求是由 Controller 顺序处理的。
这会导致性能问题,因为加载页面的时间是所有 ajax 请求的总和,而不是最长的 ajax 请求。
为了证明这一点,我在第一个(“ReadOverview8Week”)方法中放置了一个断点。
这些方法中的每一个都需要大约 600 毫秒来执行个性化。

如何让 Controller 同时响应所有三个请求?
我正在使用 iis 8。
这是ajax请求(来自kendo ui dataSource)

.DataSource(dataSource => dataSource.Ajax()
.Read(read => read.Action("ReadAllSitesOverview", "AbuseCase").Type(HttpVerbs.Get))
谢谢。

最佳答案

您面临的问题是由 ASP.NET 管理 session 的方式引起的。这是ASP.NET Session State Overview中最重要的部分(并发请求和 session 状态部分):

Access to ASP.NET session state is exclusive per session, which means that if two different users make concurrent requests, access to each separate session is granted concurrently. However, if two concurrent requests are made for the same session (by using the same SessionID value), the first request gets exclusive access to the session information. The second request executes only after the first request is finished.



如果您的操作不需要访问 session ,您可以解决您的问题。如果是这种情况,您可以使用 SessionStateAttribute 装饰 Controller 。属性:
[SessionState(SessionStateBehavior.Disabled)]

这样 Controller 就不必等待 session 。

如果您的操作只需要对 session 进行读取访问,您可以尝试使用 SessionStateBehavior.ReadOnly值(value)。这不会导致排他锁,但请求仍必须等待读写请求设置的锁。

关于ajax - asp.net mvc 4 Controller 并行执行多个 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15549519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com