HttpContext.Current.User.Identity.Name
は、Visual Studioが「ローカルIIS Webサーバーを使用]」に設定されている場合は空/空白ですが、Visual Studioが「Visual Studio開発サーバーを使用」に設定されている場合は正常に動作します。
次の操作を行うことで、Visual Studio 2010または2012(この両方を試しました)でこの問題を再現できることを願っています。
「.NET Framework 4」を選択して新しい「ASP.NET Empty Web Application」を作成し、「WindowsAuthTest2」という名前を付けます。 Web.configの内容を次のように置き換えます
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Windows">
</authentication>
</system.web>
</configuration>
次に、「Default.aspx」というプロジェクトに新しい「Webフォーム」を追加します。 Default.aspxのコードを次のように置き換えます
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WindowsAuthTest2.Default" %>
<html>
<head>
<title></title>
</head>
<body>
<asp:Label ID="Label1" runat="server"></asp:Label>
</body>
</html>
Default.aspx.csのコードを次のように置き換えます
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WindowsAuthTest2
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = "[" + HttpContext.Current.User.Identity.Name + "]";
}
}
}
ReSharperを使用して、これらのステートメントのどれが不要であるかを教えてくれません。
次に、Visual Studioが使用するWebサーバーを選択するには、プロジェクトを右クリックし、[プロパティ]を選択(またはプロジェクトの下の[プロパティ]をダブルクリック)、[Web]を選択し、[サーバー]セクションに移動します。
「Visual Studio開発サーバーを使用」および「ローカルIIS Webサーバーを使用]」で試してください。
HttpContext.Current.User.Identity.Name
は、「Use Local IIS Web server」が選択されている場合は空です。
認証のIISを変更することでこの問題を解決しました
Windows Authenticaon = Enabled
Anonymous Authenticaon = DISABLED <=== Important
ASP.NET Impersonation Enabled
解決しました!フォルダ内の「NETWORK」、「NETWORK SERVICE」、およびIIUSRSに許可を与える必要があります。そして、匿名アクセスを無効にします。