我最近遇到了在 Visual Studio 2008 下运行 asp.net Web 应用程序的问题。我收到错误“成员的类型未解决...customUserPrincipal”。跟踪各种讨论组,当您针对 Thread.CurrentPrincipal 分配自定义主体时,Visual Studio 的 Web 服务器似乎存在问题。
在我的代码中,我现在使用...
HttpContext.Current.User = myCustomPrincipal
//Thread.CurrentPrincipal = myCustomPrincipal
我很高兴我把错误排除在外,但它引出了一个问题“这两种设置委托人的方法有什么区别?”。还有其他与差异相关的 stackoverflow问题,但它们没有涉及这两种方法的细节。
我确实找到了一篇引人入胜的帖子,其中包含以下宏大的评论,但没有任何解释来支持他的断言……
对所有 Web (ASPX/ASMX) 应用程序使用 HttpConext.Current.User。
将 Thread.CurrentPrincipal 用于所有其他应用程序,例如 winForms、控制台和 Windows 服务应用程序。
你们中的任何一个安全/dot.net 专家都可以对这个主题有所了解吗?