web-dev-qa-db-ja.com

HttpContext.Current.User.Identity.Nameは空です

Silverlightアプリケーション(MVCを使用)があり、Visual Studio開発センターを使用してVisual Studioで構築している場合、問題はありません。HttpContext.Current.User.Identity.Nameには値があります

しかし、同じプロジェクトをIIS 7.5(Windows 7を使用しています)で使用している場合、HttpContext.Current.User.Identity.Name空のまま

手伝ってくれる人はいますか?または、Visual Studio開発センターから設定を見つけることができる場所を知っているので、IISの何が問題なのかを確認できますか?

36
Jordy

私はこの数日間、この問題に苦労しました。

Scott Guthrieのブログ投稿を読むことをお勧めします レシピ:イントラネットASP.NET Webアプリケーション内でWindows認証を有効にする

私にとって問題は、Windows認証がIISで有効になっていて、<authentication mode="Windows" /> の中に <system.web> web.configのセクション、匿名アクセスを妨げていませんでした。この最後の部分が鍵でした。 ブラウザが資格情報を送信するようにするには、匿名アクセスを防止する必要があります。

サイト(またはマシン)がWindows認証を使用して匿名アクセスを拒否するように、コントロールパネルでIISを構成するか、system.webセクションのweb.configに以下を追加できます。

<authentication mode="Windows" />

<authorization>
   <deny users="?"/>
</authorization>
46
Bryan Bedard

これらは問題を解決するかもしれません(私にとってはそうでした)。 In IIS Expressは、プロジェクトプロパティ値、「匿名認証」および「Windows認証」を変更します。これを行うには、プロジェクトを選択してF4を押し、これらのプロパティを変更します。

enter image description here

IISローカルで展開する場合は、ローカルマシンの「Windows認証」機能が有効になっており、「匿名認証」が無効になっていることを確認してください。

参照する

https://grekai.wordpress.com/2011/03/31/httpcontext-current-user-identity-name-is-empty/

10

「11年3月28日12時27分に回答」に加えて、ブライアンベダード

ソリューションが機能しない場合は、issマネージャーでWindows認証を有効にする必要があります。どうやってするか:

1. [実行]ダイアログボックスからIIS Manager:[スタート]メニューで、[すべてのプログラム]、[アクセサリ]、[実行]の順にクリックします。

2. [接続]ウィンドウで、サーバー名、[サイト]の順に展開し、構成する階層ウィンドウ内のレベルに移動して、WebサイトまたはWebアプリケーションをクリックします。 3. [ホーム]ウィンドウの[IIS]セクションまでスクロールし、[認証]をダブルクリックします。

4. [認証]ウィンドウで、[匿名認証]を選択し、[無効にする]をクリックします。 enter image description here

  1. [認証]ウィンドウで、[Windows認証]を選択し、[有効にする]をクリックします。

参照

7
Dmitry Toder

また、特に開発者の場合は、実際にIISサーバーに接続し、Visual Studioに付属のIIS Expressに接続していないことを確認してくださいプロジェクトをデバッグしている場合、実際に接続していないときにIISに接続していると考えるのは簡単ではないにしても同じくらい簡単です。

IISでWindows認証を有効にし、匿名認証を無効にした場合でも、Visual Studioのシミュレーションに違いはありません。

4
Mishax

最近、この問題もありました。新しいクライアントを使用して、Windows認証を使用するIISExpressを使用して、Visual Studioから実行されている古いWebフォームアプリを取得しようとしています。私にとって、web.configは正しく構成されました

ただし、IISExpress.config設定ファイルには次のものがありました。

<windowsAuthentication enabled="false">

開発者がログインしたユーザーアカウントは非常に新しいため、編集されていませんでした。単純な修正が判明したため、これをenabled = trueに変更すると、すべて正常に実行されました。

4
PaulTheCyclist

Windows認証を除くiisの認証タブで他のすべてのオプションを無効にすると、問題が解決しました。チェックしてください..

手順:

  1. マシンでiisを開きます
  2. アプリケーションプールからアプリケーションを選択します
  3. 認証オプションをクリックします
  4. Windows認証を除く他のすべてのオプションを無効にします(匿名認証は無効にする必要があります)

これを確認して、フィードバックをお知らせください。それは私のために働いた。それがあなたにも役立つことを願っています。 enter image description here

2
Adarsh

ブラウザは、IISサーバーが同じドメインにあり、グループポリシー内のセキュリティ設定で許可されている場合のみ、ユーザー名を検出します。

それ以外の場合は、資格情報を提供する必要がありますが、同じドメイン上にない場合は、認証できません。

1
cjk

前述のすべての明白な理由とは別に、別の理由があるかもしれません:あなたはあなたのコントローラーの上にAuthorize属性をそのように置いていません:

[Authorize(Roles = "myRole")]
[EnableCors(origins: "http://localhost:8080", headers: "*", methods: "*", SupportsCredentials = true)]
public class MyController : ApiController

少なくともそれは私のために働いたものです。

1
cornhedgehog

@PaulTheCyclistが言うように、IISExpress匿名認証の使用がデフォルトで有効になっている場合、Windows認証は無効になっています。

これは、PropertyPages(右クリック->プロパティではありません)と呼ばれていたもので変更できます。 Webプロジェクトを選択します

0
waxingsatirical