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が必要だと思います。現在のユーザーのIDは、現在のスレッドのIDと同じではありません。

于 2011-04-21T18:56:29.377 に答える