4.0 フレームワークで実行されている ASP.NET Web フォーム アプリケーション プロジェクトがあります。私は Web アプリケーションには精通していますが、Web フォーム アプリケーションにはあまり詳しくありません。今日、この 2 つの間に顕著な違いがありましたが、なぜこの違いが存在するのか混乱しています。
通常、Web アプリケーションでは、ページの現在のユーザーが誰であるかを判断したい場合、User.Identity.Nameからドメイン ログインを取得するだけです。そのため、F5 キーを押してデバッグ環境でソリューション (私の Webフォームアプリケーション!) を実行すると、User.Identity.Name が空であることがわかり、非常に困惑しました。そのため、「User.Identity.Name is empty」をグーグルで検索し、IISで匿名認証を無効にしていないときにこの問題を抱えている人々をほとんどすべて扱っているリンクの壁に遭遇しました。もちろん、ここで Visual Studio 2012 からデバッグしているだけなので、それは私の問題ではありません (私はそう思います)。
しかし、掘り下げ続けた結果、最終的に HttpContext に、空ではなく、ユーザーのドメイン ログインを返すあいまいなプロパティが見つかりました。プロパティはHttpContext.Current.Request.LogonUserIdentity.Nameです。それが私の質問につながります...
質問: Web フォーム アプリケーションで、User.Identity.Name が空なのに、HttpContext.Current.Request.LogonUserIdentity.Name が空でないのはなぜですか?
助けてくれてありがとう!
編集:web.configにあるものを記載するのを忘れていました(そうしないと要求されると確信しているためです!)。
<system.web>
<customErrors mode="Off" />
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Windows"/>
</system.web>
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=10,chrome=1; IE=9,chrome=1; IE=8,chrome=1; IE=edge,chrome=1" />
</customHeaders>
</httpProtocol>
<modules runAllManagedModulesForAllRequests="true" />
<defaultDocument>
<files>
<add value="Home.aspx" />
</files>
</defaultDocument>
</system.webServer>
EntityFramework のタグ以外に、web.config にあるのはこれだけです。