asp.net - sección - Autenticación de formularios Ignorando documento predeterminado
la sección de configuración authentication no se puede leer porque falta una declaración de sección (7)
Esta fue mi solución:
En Global.asax
, método: Application_BeginRequest
, coloque lo siguiente:
if (Request.AppRelativeCurrentExecutionFilePath == "~/")
HttpContext.Current.RewritePath("HomePage.aspx");
Agradable y simple, y tienes la oportunidad de construir una lógica sobre qué página de inicio quieres usar si tu sitio web usa múltiples páginas de inicio basadas en variables de configuración.
Dmitry.Alk
He pasado un día y medio tratando de resolver este problema. Básicamente, tenemos un sitio web ASP.net con Autenticación de formularios en IIS7 usando Framework 4.0.
El material de Autorización parece estar funcionando perfectamente para todos los escenarios, con la excepción de golpearlo sin ningún documento especificado (debería resolverse con el Documento predeterminado).
Por ejemplo, (por favor, no seas rudo en el sitio aún se desarrolla;)), http://www.rewardroster.com/Default.aspx funciona perfectamente, esta página debe permitir el acceso anon tal como se especifica en el archivo web.config.
pero si toco www.rewardroster.com Directamente, redirecciona a la página de inicio de sesión con la URL de retorno establecida en "/" o Login.aspx? ReturnUrl =% 2f
Algunas cosas que he intentado:
1) Establezca Autenticación en Ninguno y luego el documento Predeterminado funcionó, por lo que ese no es el problema.
2) Se agregó el atributo DefaultDocument a Web.config
3) Se eliminaron todas las entradas de la lista de documentos predeterminados en IIS, excepto Default.aspx
4) Se agregó la entrada MachineKey en Config
5) Avanzada de la canalización integrada a la clásica en IIS
Aquí está lo que hay en mi configuración:
<authentication mode="Forms">
<forms name="appNameAuth" loginUrl="Login.aspx" protection="All" timeout="60" slidingExpiration="true" defaultUrl="Default.aspx" path="/">
</forms>
</authentication>
</authentication>
<location path="Default.aspx">
Muchas gracias por su tiempo y espero que alguien sepa lo que está pasando aquí.
Estaba viendo el mismo problema cuando intento golpear la ruta raíz y probé todo lo mencionado anteriormente. Parece que Asp.net 4.0 agrega dos módulos ExtensionlessUrl a applicationhost.config para IIS 7. Puede eliminar estos módulos agregando lo siguiente a su web.config
<system.webServer>
<handlers>
<remove name="ExtensionlessUrl-Integrated-4.0"/>
<remove name=" ExtensionlessUrl-ISAPI-4.0_32bit "/>
</handlers>
</system.webServer>
Información Adicional
La solución de Johan funcionó para mí, pero solo si la solicitud era para la raíz del sitio.
Mi sitio está organizado de esta manera:
- www. [mysite] .com / login.aspx
- www. [mysite] .com / default.aspx
- www. [mysite] .com / [somestuff] /default.aspx
- www. [mysite] .com / [morestuff] /default.aspx
Después de seguir los buenos consejos de Johan, las solicitudes a www. [Mysite] .com se dirigieron a la página de inicio de sesión de formularios y, después de iniciar sesión, a la página predeterminada. Sin embargo, si alguien solicitaba "/ [somestuff] /", aún así no funcionaría.
Lo hice funcionar habilitando la autenticación anónima en los directorios [somestuff] y [morestuff], y luego deshabilitándola en los archivos individuales dentro de estos directorios. Esa no es una configuración de seguridad que deseo admitir, dado que las personas podrían llegar a donde van desde default.aspx o simplemente solicitar [somestuff] /default.aspx para empezar. Pero ahora sé por qué está fallando. Parece que necesita acceso anónimo en directorios en los que desea usar documentos predeterminados.
Lo que terminé haciendo para arreglar esto es escribir unas líneas de código en mi página de inicio de sesión para buscar Request.QueryString ["ReturnUrl"] de "/". Si lo encontró, se redirigirá a default.aspx.
No pude encontrar CUALQUIER forma de hacer que la autenticación de formularios no intercepte llamadas sin una página especificada (por ejemplo, www.misitio.com). :( Incluso probé .NET 4 URL Routing y eso no impidió que la autenticación de formularios secuestrara la solicitud tampoco.
A continuación se muestra el código que utilicé en login.aspx:
protected void Page_Load(object sender, EventArgs e)
{
if (!(IsPostBack || IsAsync))
{
string returnUrl = Request.QueryString["ReturnUrl"];
if (returnUrl != null)
if (returnUrl == "/")
Response.Redirect("default.aspx");
}
}
Me encuentro con el mismo problema y resuelto de esta manera:
en Global.asax junto a la solución Dmitry.Alk agregué:
if (Request.AppRelativeCurrentExecutionFilePath.ToLower() == "~/default.aspx")
HttpContext.Current.RewritePath("Default.aspx");
if (Request.AppRelativeCurrentExecutionFilePath.ToLower() == "~/")
HttpContext.Current.RewritePath("Default.aspx");
if (Request.AppRelativeCurrentExecutionFilePath.ToLower() == "~")
HttpContext.Current.RewritePath("Default.aspx");
Tuve un problema similar hoy. Intentaba utilizar la canalización integrada para proteger los recursos que no son de p.net (archivos estáticos, php, etc.).
Tenía una regla en mi raíz web.config que tenía, luego estaba permitiendo el acceso a recursos específicos caso por caso.
Esto funcionó, excepto que las solicitudes a "/" nunca podrían autenticarse (redirigir interminablemente a la página de inicio de sesión), mientras que las solicitudes a "/Default.aspx" estaban bien.
Mi problema fue porque el módulo Asp.Net UrlAuthentication estaba habilitado para todos los tipos de recursos, y aparentemente esto no funciona para mi escenario. En cambio, tuve que cambiar ese módulo para que funcione únicamente con recursos administrados e instalar la autenticación de URL no gestionada de IIS7. Luego tuve que configurar eso (ya que usa diferentes configuraciones de autenticación) y me aseguré de que RoleManager estuviera habilitado para los recursos no administrados (ya que me estaba autenticando en los roles). Esta URL puede ser útil: http://learn.iis.net/page.aspx/142/understanding-iis-70-url-authorization/
Tuve un problema similar. Sin estilos cuando no estaba conectado, www.site.nl / redirigido a la página de inicio de sesión (con una URL de redirección a una página de inicio) e ingresando a www.site.nl / Home (la misma página de inicio que la url de redirección mencionada antes) no necesitaba un inicio de sesión.
La solución fue:
- Abra IIS
- Abra IIS: Autenticación
- Abra y edite acceso anónimo
- Verificar usuario (Cambié el usuario a usuario de la aplicación.pool)
- Dar derechos de usuario en la raíz del sitio (en el sistema de archivos)
Eso funcionó para mí.
Buena suerte