3

ローカルイントラネットで統合Windows認証を使用するIIS6/Server2003でWebサイトを実行しています。サイトを参照することはできますが、すべてのリクエストで呼び出される次のC#コードを呼び出すと、断続的な「オブジェクトヌル」エラーが発生します。

.... 
GetUserIdFromPrincipal(User) 
....  

public static string GetUserIdFromPrincipal(IPrincipal principal) {     
     return principal.Identity is WindowsIdentity ? (principal.Identity as WindowsIdentity).User.Value : principal.Identity.Name; 
} 

したがって、エラーは断続的に発生するため、Windows Authはある程度のレベルで機能していますが、サイト内を数回クリックすると、IPrincipalがnullであることを意味するnull参照エラーが発生します(ASP.NETではこれがnullになることはないと思いました)。

このエラーは、新しく構築されたVMでのみ発生します。コードは他のマシンでも問題なく、ローカルで開発する場合は確かに問題ありません。

IISは、要求ごとにWindows認証の詳細を要求しますか?このような断続的な問題の原因は何でしょうか。どんな助けや提案も大歓迎です。

4

2 に答える 2

2

あなたのIDは単にWindowsIdentityではないので、ケースは失敗し、nullオブジェクトにつながることをお勧めします。IIdentyは、FormsIdentity、ClientFormsIdentity、GenericIdentity、PassportIdentity、WindowsIdentityの場合がありますが、試してみてください。


typeof(principal.Identity);

本物を手に入れるために。

于 2011-01-17T13:28:25.533 に答える
2

上記の場合は、IIS6でWindows認証と匿名をチェックしたためだと思います。これにより、IISがWindows Authを使用してIPrincipalを作成する場合もあれば、IPrincipleを作成しない匿名Authを使用する場合もあるという状況が発生したようです。確かに、匿名認証オプションをオフにすると、問題は解決したようです。

于 2011-01-17T15:16:51.267 に答える