1

我有一个具有 2 个 AsyncMethods 的 AsyncController。一个叫做GetMessages,另一个叫做Check。似乎,一个调用阻塞了另一个,可能是因为两者都调用 this.AsyncManager.OutstandingOperations.Increment(); 他们共享同一个 AsyncManager 吗?这样做的正确方法是什么?我是否必须拥有 2 个 AsyncController 才能确保它们不会互相干扰?

更新:两种方法的代码与此处发布的代码相似:异步操作完成,但结果未发送到浏览器

其实是同一个控制器,只是加了Check/CheckCompleted。有时,“检查​​”必须被触发,以便“GetMessages”返回

Update2:两种方法的等待时间均为 60 秒。我现在将一个减少到 5 个,这有帮助,但我认为这只是一个 hack。

4

1 回答 1

1

他们不应该阻止。您观察到的阻塞可能是由于这两种方法都使用 Session 并且因为 Session 不是线程安全的,如果您有来自同一会话的两个并行请求(例如 AJAX 请求),ASP.NET 会阻止访问。

因此,请尝试通过使用以下属性装饰它们来禁用这些操作的所有会话:

[SessionState(SessionStateBehavior.Disabled)]
于 2011-07-08T18:14:46.750 回答