【发布时间】:2016-06-20 06:53:09
【问题描述】:
我正在使用带有 EF 6 的 ASP.NET 4.6 到一个新的 Web Api 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;
}
}
在我同时提出两个请求之前,这一切似乎都可以正常工作,其中一个返回正确的值,另一个说
在前一个异步操作完成之前,在此上下文上启动了第二个操作。使用 'await' 确保在此上下文中调用另一个方法之前所有异步操作都已完成。不保证任何实例成员都是线程安全的。
我从两个不同的客户端发出请求,所以上下文应该不同。应该……
我不知道如何解决它。我读了很多,我的代码似乎是正确的。
问题是为什么会抛出这个错误?看不懂
感谢您的建议。
【问题讨论】:
标签: asp.net entity-framework asp.net-web-api async-await dbcontext