1

最近安装了 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 并记住这是实时代码,它当前已部署并正在工作。

任何人都可以解释这里发生了什么吗?

4

1 回答 1

0

我认为您想要 HttpContext.Current.User 代替。当前用户的身份与当前线程的身份不同。

于 2011-04-21T18:56:29.377 回答