首页 > 解决方案 > ASP.NET MVC 5 API 应用程序使用自己的连接字符串而不是引用的应用程序连接字符串

问题描述

我有一个包含 2 个应用程序的解决方案

在应用程序中,我有这个控制器:

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 吗?

标签: c#asp.netasp.net-mvc

解决方案


推荐阅读