说明:在执行当前网络请求时发生了一个未处理的异常。在执行当前网络请求时发生了一个未处理的异常。请查看堆栈跟踪,以了解更多关于该错误的信息以及它在代码中的起源。
异常详情。System.InvalidOperationException: 序列中没有元素
RolesCovidDbEntities db = new RolesCovidDbEntities();
var dataItem = db.Logins.Where(x => x.Username == model.Username && x.Password == model.Password).First(); // this is where the error occurs
if (dataItem != null)
{
FormsAuthentication.SetAuthCookie(dataItem.Username, false);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index");
}
原因:你正在使用 First()
如果获取的列表为空,它将抛出异常。可以考虑使用 FirstOrDefault()
倒不如说 dataItem
将被设置为 null
.
正如已经评论过的,你不需要单独使用 Where
自从 FirstOrDefault()
也接受一个谓词,因此,你可以在这里传递相同的谓词,如
var dataItem = db.Logins
.FirstOrDefault(x => x.Username == model.Username && x.Password == model.Password);