我们遇到ASP.NET Web Api 2和MSSQL的边缘情况错误。情况是这样的:
问题在于:
来自不同用户的两个同时请求进入以检索服务器的复杂令牌。第一个请求失败。第二个请求被提供与第一个请求相关联的复杂令牌。
仅当Windows Server从睡眠状态唤醒时才会出现此情况。
在所有其他时间,用户发送简单令牌并接收正确的复杂令牌。
任何人都可以了解造成问题的原因以及解决方法吗?
与此案例相关的代码的简化版本如下:
// The Controller action that receives the simple Token
public ActionResult GetToken(string simpleToken)
{
ApiOutput.UserToken.Token = QueryToken(simpleToken);
return RedirectToAction("Index");
}
// The method that retrieves the complex token from the database
public static string QueryToken(string simpleToken)
{
using (var _wdb = new AppDbContext())
{
var data = _wdb.TokenData.FirstOrDefault(d => d.SimpleToken == simpleToken);
return data.ComplexToken;
}
}
// Controller Index action
public ActionResult Index()
{
return View();
}
<!-- The Index view where the complex token is returned -->
@{ Layout = null; }
@using myApp.Models
@model ApiOutput.UserToken
<!DOCTYPE html>
<html>
<body>
<script>
window.dbtoken = "@ApiOutput.UserToken.Token";
</script>
</body>
</html>