【问题标题】:Live Code runs in IIS and ASP.NET Web Server but not IIS ExpressLive Code 在 IIS 和 ASP.NET Web 服务器中运行,但不在 IIS Express 中运行
【发布时间】:2011-08-10 06:25:28
【问题描述】:

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

谁能解释这里发生了什么?

【问题讨论】:

  • 你解决过这个问题吗?我有同样的问题
  • @LillyPop:恐怕我从来没有解决过这个问题——我想我最终改用了完整的 IIS,它工作得很好(一年多以前,我现在已经从那份工作中离职了)。

标签: vb.net iis-express


【解决方案1】:

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

【讨论】:

  • 谢谢 Scott - 我会在我回去工作(长周末)时尝试一下。我很困惑为什么这在生产中有效,但在 IIS Express 下无效。
  • 我已经更新了代码,但问题仍然存在 - HttpContext.Current.User 作为 System.Security.Principal.GenericPrincipal 出现,我得到了 InvalidCastException。
猜你喜欢
  • 2017-04-09
  • 2020-05-28
  • 2014-09-21
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 2012-10-14
  • 1970-01-01
  • 2016-12-13
相关资源
最近更新 更多