最近安装了 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 并记住这是实时代码,它当前已部署并正在工作。
任何人都可以解释这里发生了什么吗?