我在 Controller 内有一些操作,例如:
public class ValuesController : Controller
{
[HttpPost]
public string GetInfo()
{
Thread.Sleep(30000); // logics imitation
return "result";
}
}
当我从客户端发送关于此操作的请求时,我将在等待“逻辑模仿”时收到“主线程阻塞”(如死锁) 我怎样才能防止它? 已经尝试过:
public class ValuesController : Controller
{
[HttpPost]
public async Task<string> GetInfo()
{
return await Task.Factory.StartNew(() =>
{
Thread.Sleep(30000);
return "result";
});;
}
}
不工作...
已经看过( ASP.NET MVC and Ajax, concurrent requests? ),但是 SessionState.ReadOnly 方式不适合我...
也尝试使用 .svc 服务代替 Controller 操作,但遇到了同样的问题。
最佳答案
MVC 默认情况下会阻止并行 session ,只有一种方法可以避免它:
[SessionState(SessionStateBehavior.ReadOnly)]
Controller 上的属性
,并通过使用写入和读取 session 清楚地分离逻辑。
关于asp.net - MVC Ajax请求不阻塞主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28456285/