如何解决Asp.NetCore 中每个数据库访问的模拟
在解释问题之前先了解一些信息。 我们是一个与数据库进行通信的应用程序(在 asp.netcore 中)。
据我所知,asp.netcore 的文档说不要模仿,但有一个可行的解决方法。
在我们的案例中,它仅部分起作用,正如您在此处看到的 (Impersonation Middleware in an Asp.Net Core Intranet app for Windows-Identity)。在这种情况下,模拟从 asp.netCore 项目的启动开始。
现在我希望模拟每个数据库访问。意味着当我调用“更新”方法时,我只想模拟这部分,如果我保存新索引,我只想模拟保存过程。 我目前的方法是使用适配器。适配器在我的网络应用程序中,我需要在我的 DataAccessLayer 项目中进行模拟(首先是实现可以进行单元测试的代码)。
适配器如下所示:
public void Impersonate(Action action)
{
if (action is null) throw new ArgumentNullException(nameof(action));
var winIdent = _context?.User?.Identity as WindowsIdentity;
// If we run the code as localhost we don't need the WindowsIdentity here.
if (winIdent is null)
{
action();
}
else
{
WindowsIdentity.RunImpersonated(winIdent.AccessToken,action);
}
}
在 DataAccessLayer 中,它看起来像这样:
_impersonation.Impersonate(() =>
{
// Code which runs impersonated.
});
乍一看一切正常,但也许有更好的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。