c# - ASP.NET MVC 如何在同一解决方案中使用另一个项目中的函数
问题描述
我尝试了各种方法来让我的应用程序正常工作,并尝试在这里搜索我收到的各种消息的解决方案,但没有一个有效。因此,我决定从头开始,并要求以正确的方式连接我的 2 个应用程序。
我有一个解决方案,里面有 2 个项目:
应用
程序 应用程序是具有登录/注销、用户管理功能等的独立应用程序。
应用程序连接到数据库ApplicationApi
ApplicationApi 是一个控制台应用程序,它引用了 Application
ApplicationApi 的主要任务是通过其 ApiController 接收任何传入的请求,然后将其传递给 Application,后者将返回结果给它
ApplicationApi 未连接到数据库
这是 ApplicationApi 中的函数,我想在 Application 中调用函数
namespace ApplicationApi.Controllers
{
public class TokenController:ApiController
{
public String Get()
{
var auth = new AuthenticationController();
return auth.AuthenticateUser("user@one.com", "P@ssw0rd").ToString();
}
}
}
这是 ApplicationApi 调用的函数
namespace Application.Controllers.API
{
public class AuthenticationController : Controller
{
ApplicationDbContext dbContext = new ApplicationDbContext();
Logger log = LogManager.GetCurrentClassLogger();
PasswordHasher passwordHasher = new PasswordHasher();
public bool AuthenticateUser(String username, String password)
{
try
{
var user = dbContext.Users.FirstOrDefault(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;
}
}
}
catch (Exception e)
{
log.Error(e, "Exception found for user: " + username);
return false;
}
}
}
}
目前,当我从 Postman 发出请求时,当调试打开时,我从 Application 收到此错误:
{“没有为具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序找到实体框架提供程序。确保该提供程序已在应用程序配置文件的“entityFramework”部分注册。请参阅http://go.microsoft .com/fwlink/?LinkId=260882了解更多信息。"}
这看起来像是在说我的 ApplicationApi 需要有 EntityFramework 或需要引用它才能工作?
这就是我感到困惑的地方。ApplicationApi 只应该向 Application 询问结果。为什么会发生此错误?ApplicationApi 没有任何数据库连接。它也不需要。它只是一个传输层。
也许我开始错了,所以我希望有人可以指导我如何实际做到这一点。
编辑:我的问题不是那个问题的重复,因为我在问为什么我需要 EntityFramework 在不会连接到数据库的 Api 项目中?
解决方案
推荐阅读
- spring-boot - 将 Spring JPA 实现到 COSMOS DB 的 Spring Boot 应用程序
- regex - 如何过滤 Powershell 以将目录名称与 AD SamAccountName 进行比较并忽略 .Vx 模式?
- android - 对 Kotlin 协程感到困惑
- xamarin - CollectionView 在 Xamarin Forms 中导致呈现异常
- java - 使用 StringBuilder/StringWriter/String.format() 附加大字符串时出现 Java OutofMemoryException
- ffmpeg - ffmpeg 添加字幕工作正常,但不能在 chrom 浏览器中
- qt - 无法在 Qt 中使用 QDir 创建文件夹
- react-native - 无法在 React Native 中构建 APK?
- python - 每年插入五年数据
- c - 如何在 Linux/C 中编写程序以使用键盘模拟单八度钢琴