在尝试调试为什么自定义身份验证过滤器在我们的内存中集成测试中不起作用时,我发现HttpRequestContext的不同子类设置Principal的方式有所不同。
其中大多数(OwinHttpRequestContext
,SelfHostHttpRequestContext
,WebHostHttpRequestContext
)都设置了Thread.Principal
WebHostHttpRequestContext.cs:
public override IPrincipal Principal
{
get
{
return _contextBase.User;
}
set
{
_contextBase.User = value;
Thread.CurrentPrincipal = value;
}
}
但有些人根本没有设置它(BatchHttpRequestContext
和RequestBackedHttpRequestContext
)。
这是一个设计决定,我需要重写部分应用程序以不使用Thread.Principal)还是需要/将要修复的错误?