tables - identity framework c#
HttpContext.Current.User.Identity.Name está vacío con IIS Express pero no con Visual Studio Development Server (2)
Esta pregunta ya tiene una respuesta aquí:
HttpContext.Current.User.Identity.Name
está vacío / en blanco cuando Visual Studio está configurado en "Usar servidor web local de IIS" pero funciona correctamente cuando Visual Studio está configurado en "Usar Visual Studio Development Server".
Esperamos que pueda duplicar este problema en Visual Studio 2010 o 2012 (he intentado ambos) haciendo lo siguiente:
Cree una nueva "aplicación web vacía ASP.NET" con ".NET Framework 4" seleccionado y asígnele el nombre "WindowsAuthTest2". Reemplace los contenidos de Web.config con
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Windows">
</authentication>
</system.web>
</configuration>
A continuación, agregue un nuevo "Formulario web" al proyecto llamado "Default.aspx". Reemplace el código en Default.aspx con
<%@ 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>
Y reemplaza el código en Default.aspx.cs con
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 + "]";
}
}
}
No tengo ReSharper para decirme cuáles de las declaraciones de uso no son necesarias.
Luego, puede seleccionar qué servidor web utilizará Visual Studio haciendo clic con el botón derecho en el proyecto, seleccionando "Propiedades" (o haciendo doble clic en "Propiedades" debajo del proyecto), seleccionando "Web" y navegando a la sección "Servidores".
Pruébelo con "Use Visual Studio Development Server" y "Use Local IIS Web server".
Esperemos que pueda ayudarme a averiguar por qué HttpContext.Current.User.Identity.Name
está vacío cuando se selecciona "Usar servidor web local de IIS".
¡Lo he resuelto! debe dar permiso a "RED", "SERVICIO DE RED" e IIUSRS en la carpeta. Y deshabilitar el acceso anónimo.
Resolví este problema cambiando el IIS en la autenticación
Windows Authenticaon = Enabled
Anonymous Authenticaon = DISABLED <=== Important
ASP.NET Impersonation Enabled