我在ASP.NET 4.6中使用EF 6开发了一个新的Web 2项目,我阅读了许多描述异步/等待模式的文章,很明显,对于很多请求,这种模式提高性能有很多原因。所以我决定第一次使用它。在这里决定创建一个Biz项目和一个DAL项目,举一个例子。
这是控制器方法:
[HttpGet]
public async Task<bool> CheckValueValidity(string value, string type)
{
return await _accountsBiz.CheckValueTypeValidity(value, type);
}我在控制器构造函数中执行biz对象。
这就是你的专长:
public async Task<bool> CheckValueTypeValidity(string value, string type)
{
bool isValid = false;
switch (type.ToLower())
{
case "email":
isValid = await _accountsRepository.CheckEmailValidity(value);
break;
case "username":
isValid = await _accountsRepository.CheckUserNameValidity(value);
break;
}
return isValid;
}我在BIZ构造函数中实例存储库。
最后,这是DAL方法:
public async Task<bool> CheckEmailValidity(string email)
{
using(MyEntities db = new MyEntities())
{
return await db.AspNetUsers.CountAsync(u => u.Email == email) > 0 ? false : true;
}
}直到我同时提出两个请求,它们中的一个返回了正确的值,另一个表示
在以前的异步操作完成之前,在此上下文上启动了第二个操作。在此上下文中调用另一个方法之前,请使用“等待”确保任何异步操作都已完成。不保证任何实例成员都是线程安全的。
我从两个不同的客户端发出请求,所以上下文应该是不同的。应该..。
我不知道怎么修好它。我读了很多书,我的代码似乎是正确的。
问题是为什么要抛出这个错误?我不明白
谢谢你的建议。
发布于 2016-06-19 22:53:09
确定在执行流中发现了错误,有一种方法使用DbContext而不使用using块.我的错误,但现在很清楚,上下文必须处理每一个请求!
https://stackoverflow.com/questions/37912174
复制相似问题