別の開発者と私は同じ ASP.NET Web アプリで作業しています。アプリケーションはフォーム認証を使用しますが、IIS 仮想ディレクトリは "匿名アクセス" と "統合 Windows 認証" の両方で構成されています。これは、必要に応じて認証する本番サイトを反映しています。
私たちの 2 つの設定の潜在的な重要な違いは、彼が Windows 7 と IIS 7 を使用しているのに対し、私は Windows XP と IIS 5 を使用していることです (念のため)。
最初に両方でアプリを実行すると、変数...
HttpContext.Current.User.Identity.IsAuthenticated…嘘です。これは、フォーム認証で構成されているためです。その後、アプリは WindowsAuth.aspx ページにリダイレクトします。そのページは Request.ServerVariables["LOGON_USER"] サーバー変数をチェックし、これが null または空でない場合は、それを使用して自動的にサインインします。
問題は、私の PC では Request.ServerVariables["LOGON_USER"] が常に空であることです。匿名アクセスが有効になっているため、これは正しいことです。しかし、私の同僚の PC と本番環境では、変数はユーザーのユーザー名を保持しています。これがなぜなのか理解できません。この点で、IIS 5 と 7 の間に違いはありますか? そうでなければ、これを説明できますか?もちろん、セットアップに他の環境を反映させたいのですが、現時点では Windows 7 へのアップグレードは最後の手段です。