c# - ASP.NET MVC 5 API 应用程序使用自己的连接字符串而不是引用的应用程序连接字符串
问题描述
我有一个包含 2 个应用程序的解决方案
- 应用程序(.NET 应用程序)
- ApiApplication(控制台应用程序)
在应用程序中,我有这个控制器:
public class ApiAccountController : Controller
{
ApplicationDbContext dbContext = new ApplicationDbContext();
Logger log = LogManager.GetCurrentClassLogger();
PasswordHasher passwordHasher = new PasswordHasher();
// GET: Account
public bool AuthenticateUser(String username, String password)
{
try
{
var user = dbContext.Users.FirstOrDefault(u => u.UserName == username);
//var user = dbContext.Users.Count(u => u.UserName == username);
if (user == null)
{
log.Error(username + " not found");
return false;
}
else
{
var result = passwordHasher.VerifyHashedPassword(user.PasswordHash, password);
if (result == PasswordVerificationResult.Success)
{
return true;
}
else
{
log.Error("Invalid password for user: " + username);
return false;
}
}
//return false;
}
catch (Exception e)
{
log.Error(e, "Exception found for user: " + username);
return false;
}
}
}
在 ApiApplication 我有这个 Api 类:
public class TokenController : ApiController
{
// This is naive endpoint for demo, it should use Basic authentication to provide token or POST request
// GET api/token/
public string Get(string username, string password)
{
if (CheckUser(username, password))
{
return JwtManager.GenerateToken(username);
}
throw new HttpResponseException(HttpStatusCode.Unauthorized);
}
private bool CheckUser(string username, string password)
{
ApiAccountController accountController = new ApiAccountController();
return accountController.AuthenticateUser(username,password);
}
}
ApiApplication 引用 Application,我想从 Application 调用 AuthenticateUser。以前当我尝试运行它时,AuthenticateUser 总是会返回 null,我设法将其缩小到与我的 dbContext 相关的范围内。但是,我发现当我将连接字符串从 Application 放入 ApiApplication 时,我收到一条错误消息,提示我的数据库已经存在。
ApiApplication 的目的只是接收请求并将请求传递给 Application 并从 ApiApplication 中检索数据。它根本不应该连接到数据库。我错过了什么吗?当 ApiApplication 调用 AuthenticateUser 方法时,我应该为 Application 指定 connectionString 吗?
解决方案
推荐阅读
- selenium - org.openqa.selenium.chrome.ChromeDriver 类型不可访问错误
- dictionary - kotlin -- 我可以重写这个地图访问来摆脱 ``!!`` 吗?
- java - 从函数调用对话框 [Android Studio]
- iis - 每个路由的不同身份验证架构(Windows、Bearer)
- c# - 如何在 Visual Studio 中启动并运行 SQLite?
- javascript - 用于标记单选输入的 jQuery 选择器
- asp.net-core - 我应该如何为 .NET Core 2.1 实施受支持的运行状况检查?
- c# - 在 C# 中解析 gml 文件时如何选择具有特定属性的特定元素?
- php - 学说要坚持已经管理的关联实体
- logic - CLIPS(recursion) - 亲子关系:如何正确实现祖宗关系?