我正在开发一个ASP.NET Core webapp,它需要转发用户窗口的凭据,以便通过Entity Framework用于数据库访问。但是数据库访问会引发异常。 using (WindowsImpersonationContext impersonationContext = ((WindowsIdentity)User.Identity).Impersonate())
{
var debug2 = WindowsIdentity.GetCurrent(); // shows the desired user
entiryFrameworkContext.BlahBlahBlah.ToList();
}
。
我尝试在中间件中使用模拟,以及在查询本身周围使用模拟。我调用它的方式是:
app.Use(async (context, next) =>
{
using (WindowsImpersonationContext impersonationContext = ((WindowsIdentity)context.User.Identity).Impersonate())
{
var debug = WindowsIdentity.GetCurrent(); // shows the desired user
await next.Invoke();
}
});
或者如果我采用中间件方法:
ulimit -t 10; ./my-process
无论是在推送模式下推送到IIS还是在VS2017 IIS Express中运行,结果都是相同的。
有没有人知道为什么匿名用户仍然用于数据库调用?如果是这样,我该如何解决?