c# - ASP.Net MVC 获取角色时无法连接到数据库
问题描述
我正在尝试编写一个 ASP.Net MVC Web 应用程序。几周前,我不得不重新格式化我的开发 PC。当我恢复我的应用程序时,我开始收到一个我以前没有遇到的错误。该错误来自尝试在剃刀视图中获取用户角色。我在 web.config 中启用了角色管理器。我在 startup.cs 添加了角色
ApplicationDbContext dbContext = new ApplicationDbContext();
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(dbContext));
if (!roleManager.RoleExists("Visitor"))
{
var role = new IdentityRole();
role.Name = "Visitor";
roleManager.Create(role);
}
并且角色在数据库中。在我的布局中,导航栏中的链接仅对某些用户可用。运行此代码时会引发错误:
@if(User.IsInRole("Visitor"))
{
<li>Test</li>
}
我也试过:
@if (Roles.IsUserInRole(User.Identity.Name, "Vistor"))
{
<li>@Html.ActionLink("VistorArea", "Index", "Toolbox")</li>
}
我得到的错误是
HttpException:无法连接到 SQL Server 数据库。
SqlException:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)
如果我删除代码,我可以登录并注册,这样它就可以连接到数据库。我试图创建一个新的干净项目并遇到同样的问题。如果有帮助,我可以上传干净的项目。任何帮助表示赞赏!
更新
因此,作为对我可以从数据库中获取数据的问题的回应。当我运行此代码时:
ApplicationDbContext db = new ApplicationDbContext();
var test = db.Users.Find("8078ad14-6c09-4c83-baa2-9e14621ceb10");
if(test.Email == "test@test.com")
{
ViewBag.TestString = "Success";
}
else
{
ViewBag.TestString = "Failure";
}
它成功了。我的连接字符串看起来像这样
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-RoleTest-20180707020513.mdf;Initial Catalog=aspnet-RoleTest-20180707020513;Integrated Security=True"
providerName="System.Data.SqlClient" />
解决方案
从 web.config 检查您的数据库 connectionString 并检查 IdentityModels.cs
网页配置
<add name="DefaultConnection" connectionString="Data Source=.; Database=Your Database;uid=sa;password=Your Password;" providerName="System.Data.SqlClient" />
身份模型.cs
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
推荐阅读
- design-patterns - 有人可以回答给定的场景吗?我一直试图理解但完全卡住了
- swift - 按下检索按钮时,我想在文本字段中显示保存的用户名和密码
- matlab - 为什么我的 LSTM 网络显示的全局训练精度低于 100%,即使过去 20-30 个时期中所有批次的小批量精度为 100%?
- python - 在 pandas pivot_table 函数中重新排序数据
- python - 如何使用新输入使用深度学习模型进行预测?
- bash - 如何从 bash 中的变量创建数组?
- azure - Azure 数据工厂 - 错误 - “群集已停止且不可重新启动”
- python - 如何在图片或数组中找到网格[python]
- python - 使用 cv2.fisheye undistort 时无法重新映射保留所有黑色区域
- ios - 如何在 Swift 中做一个正确的日期格式化程序