最近安装了IIS Express我希望它能让我的生活变得更轻松,但我几乎马上就遇到了问题。
考虑以下代表一些实时代码:
Public Shared Function GetServiceId() As String
Dim principal As MyCustomAuthentication.Principal.MyPrincipal
principal = CType(Thread.CurrentPrincipal, MyCustomAuthentication.Principal.MyPrincipal)
.
.
.
.
End Function
在ASP.NET Web服务器(Cassini)下运行代码一切正常,我可以看到Thread.CurrentPrincipal的类型为MyCustomAuthentication.Principal.MyPrincipal。
在IIS Express下运行同一行抛出一个InvalidCastException并检查我发现它现在是System.Security.Principal.GenericPrincipal的类型,因为没有其他任何改变而引起混淆。
我可以确认MyCustomAuthentication.Principal.MyPrincipal实现了IPrincipal并记住这是Live代码,它当前已部署并正常工作。
任何人都可以了解这里发生的事情吗?
答案 0 :(得分:0)
我认为你想要HttpContext.Current.User。当前用户的身份与当前线程的身份不同。