WCF サービスもホストする基本的な Silverlight ビジネス アプリケーションがあります。サービスは、管理者の役割を必要とするように保護されています。
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class Service1 : IService1
{
public Service1()
{
Thread.CurrentPrincipal = HttpContext.Current.User;
}
[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
public void DoWork()
{
}
}
奇妙なことに、Silverlight アプリケーションからログアウトした後でも、Fiddler を使用して DoWork() へのサービス呼び出しを正常に再生できました。
ブレークポイントをオンに設定すると、以前に認証されたユーザー ID がまだ保持されていることがThread.CurrentPrincipal = HttpContext.Current.User;
示されました。HttpContext.Current.User
ここで何が起こっているのですか?