4

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 にあるのはこれだけです。

4

1 に答える 1

5

答えは自分で見つけました。IIS Express の applicationhost.config は、Windows 認証を許可しないように設定されていました。enabled="true" を設定するだけで、User.Identity は空ではなくなりました。

<windowsAuthentication enabled="true">
  <providers>
    <add value="Negotiate" />
    <add value="NTLM" />
  </providers>
</windowsAuthentication>

編集:
1) 情報不足で申し訳ありません。元の回答で変更した XML タグを実際に持っていましたが、[コード サンプル] ボタンをクリックしてコードとしてマークするのを忘れていたようで、XML タグが表示されませんでした。それらは今見えるはずです。

2) 変更した applicationhost.config の場所は、[マイ ドキュメント] の下のいくつかのフォルダーの下にあります。正確な場所は次のとおりです: C:\Users[あなたのユーザー]\My Documents\IISExpress\config

于 2013-10-30T17:06:00.700 に答える