Подтвердить что ты не робот

HttpContext.Current.User.Identity.Name пуст, используя IIS Express, но не Visual Studio Development Server

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" .

4b9b3361

Ответ 2

Я решил эту проблему, изменив IIS в аутентификации

Windows Authenticaon = Enabled
Anonymous Authentication = DISABLED <=== Important
ASP.NET Impersonation Enabled

Мой IIS

Ответ 3

Я решил это! вам необходимо предоставить разрешение на "СЕТЬ", "СЕТЕВОЕ ОБСЛУЖИВАНИЕ" и IIUSRS в папке. И отключите анонимный доступ.