Silverlightアプリケーション(MVCを使用)があり、Visual Studio開発センターを使用してVisual Studioで構築している場合、問題はありません。HttpContext.Current.User.Identity.Name
には値があります
しかし、同じプロジェクトをIIS 7.5(Windows 7を使用しています)で使用している場合、HttpContext.Current.User.Identity.Name
空のまま
手伝ってくれる人はいますか?または、Visual Studio開発センターから設定を見つけることができる場所を知っているので、IISの何が問題なのかを確認できますか?
私はこの数日間、この問題に苦労しました。
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>
これらは問題を解決するかもしれません(私にとってはそうでした)。 In IIS Expressは、プロジェクトプロパティ値、「匿名認証」および「Windows認証」を変更します。これを行うには、プロジェクトを選択してF4を押し、これらのプロパティを変更します。
IISローカルで展開する場合は、ローカルマシンの「Windows認証」機能が有効になっており、「匿名認証」が無効になっていることを確認してください。
参照する
https://grekai.wordpress.com/2011/03/31/httpcontext-current-user-identity-name-is-empty/
「11年3月28日12時27分に回答」に加えて、ブライアンベダード
ソリューションが機能しない場合は、issマネージャーでWindows認証を有効にする必要があります。どうやってするか:
1. [実行]ダイアログボックスからIIS Manager:[スタート]メニューで、[すべてのプログラム]、[アクセサリ]、[実行]の順にクリックします。
2. [接続]ウィンドウで、サーバー名、[サイト]の順に展開し、構成する階層ウィンドウ内のレベルに移動して、WebサイトまたはWebアプリケーションをクリックします。 3. [ホーム]ウィンドウの[IIS]セクションまでスクロールし、[認証]をダブルクリックします。
4. [認証]ウィンドウで、[匿名認証]を選択し、[無効にする]をクリックします。
また、特に開発者の場合は、実際にIISサーバーに接続し、Visual Studioに付属のIIS Expressに接続していないことを確認してくださいプロジェクトをデバッグしている場合、実際に接続していないときにIISに接続していると考えるのは簡単ではないにしても同じくらい簡単です。
IISでWindows認証を有効にし、匿名認証を無効にした場合でも、Visual Studioのシミュレーションに違いはありません。
最近、この問題もありました。新しいクライアントを使用して、Windows認証を使用するIISExpressを使用して、Visual Studioから実行されている古いWebフォームアプリを取得しようとしています。私にとって、web.configは正しく構成されました
ただし、IISExpress.config設定ファイルには次のものがありました。
<windowsAuthentication enabled="false">
開発者がログインしたユーザーアカウントは非常に新しいため、編集されていませんでした。単純な修正が判明したため、これをenabled = trueに変更すると、すべて正常に実行されました。
ブラウザは、IISサーバーが同じドメインにあり、グループポリシー内のセキュリティ設定で許可されている場合のみ、ユーザー名を検出します。
それ以外の場合は、資格情報を提供する必要がありますが、同じドメイン上にない場合は、認証できません。
前述のすべての明白な理由とは別に、別の理由があるかもしれません:あなたはあなたのコントローラーの上にAuthorize属性をそのように置いていません:
[Authorize(Roles = "myRole")]
[EnableCors(origins: "http://localhost:8080", headers: "*", methods: "*", SupportsCredentials = true)]
public class MyController : ApiController
少なくともそれは私のために働いたものです。
@PaulTheCyclistが言うように、IISExpress匿名認証の使用がデフォルトで有効になっている場合、Windows認証は無効になっています。
これは、PropertyPages(右クリック->プロパティではありません)と呼ばれていたもので変更できます。 Webプロジェクトを選択します