HttpContext.Current.User.Identity.Name
пуст/пуст, если для Visual Studio установлено значение "Использовать локальный веб-сервер IIS" , но работает правильно, если для Visual Studio установлено значение "Использовать сервер разработки Visual Studio".
Надеюсь, вы можете дублировать эту проблему в Visual Studio 2010 или 2012 (я пробовал оба), выполнив следующие действия:
Создайте новое "Пустое веб-приложение ASP.NET" с ".NET Framework 4" и назовите его "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". Замените код в 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 будет использовать, щелкнув правой кнопкой мыши проект, выбрав "Свойства" (или дважды щелкнув "Свойства" в проекте), выбрав "Интернет" и перейдя на "Серверы", раздел.
Попробуйте использовать "Использовать сервер разработки Visual Studio" и "Использовать локальный веб-сервер IIS" .
Надеюсь, вы можете помочь мне понять, почему HttpContext.Current.User.Identity.Name
пуст, когда выбран "Использовать локальный веб-сервер IIS" .