visual tutorial paginas net mvc framework español ejemplos crear asp aplicaciones asp.net asp.net-mvc iis asp.net-mvc-3

tutorial - paginas web asp.net ejemplos



Problema de ASP.NET MVC con la configuración de la sección de autenticación de formularios (8)

¿Respuesta actualizada para MVC 4, fuertemente prestado de esta página y Solicitud de redirección a / Cuenta / Login? ReturnUrl =% 2f desde la instalación de MVC 3 en el servidor

<appSettings> ... <add key="PreserveLoginUrl" value="true" /> </appSettings> ... <authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="43200" /> <!--43,200 in minutes - 30 days--> </authentication>

Tengo una aplicación ASP.NET MVC 3 Beta ejecutándose en IIS. En mi web.config siguiente sección responsable de la autenticación de formularios:

<authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" name=".VNK" protection="All" timeout="43200" cookieless="UseCookies" /> </authentication>

La dirección de inicio de sesión definida es ~/Account/LogOn .

Cuando trato de obtener la URL de inicio de sesión usando:

FormsAuthentication.Initialize(); string loginUrl = FormsAuthentication.LoginUrl;

Recibo: /VNK/site/Account/Login

¿Por qué obtengo una dirección diferente a la definida en web.config ?

ACTUALIZACIÓN : el prefijo "/ VNK / sitio /" no es un problema aquí. El problema es que la propiedad FormsAuthentication clase FormsAuthentication no refleja el valor de web.config. Significa que si cambio el valor del atributo loginUrl en web.config de "~ / Account / LogOn" a, por ejemplo, "~ / foobar", FormsAuthentication.LoginUrl todavía tiene el valor de "/ VNK / site / Account / Login". Por qué ?


Así que la solución simple fue eliminar WebMatrix. *. Dll de la carpeta Bin en el proyecto web. He hecho esto para mi proyecto asp.net ya que redirigía mi inicio de sesión a la URL de estilo mvc.


Creo que el servidor tiene problemas para decidir qué significa ~ en este caso, intente dar una URL más directa a la página de inicio de sesión, como / Cuenta / Iniciar sesión.

Tal vez encuentres algo útil aquí http://msdn.microsoft.com/en-us/library/xdt4thhy.aspx


Creo que hay un error en ASP.NET MVC 3 Beta. Este problema no aparece en versiones anteriores de ASP.NET MVC.

Si alguien quiere repetir este error, debe seguir esto:

1. Descargue el marco de mvc .

2. Crear nueva aplicación web ASP.NET MVC 3

3. Activar Authorize atributo en About acción en HomeController

[Authorize] public ActionResult About() { return View(); }

4. Inicie la aplicación e invoque Acerca de la acción haciendo clic en la pestaña Acerca de . Recibirá un error del servidor porque la aplicación está intentando redirigirlo a dicha URL:

http://localhost:[port_num]/Account/Login?ReturnUrl=%2fHome%2fAbout

Obviamente no hay vista de inicio de sesión . Hay vista LogOn . La acción de Url a LogOn se define en web.config no modificado:

<authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880" /> </authentication>

Pero la aplicación no refleja eso. ¿Alguien tiene alguna pista de lo que está pasando?

ACTUALIZAR:

Tenía razón, hay un error en MVC 3 Beta . De problemas conocidos :

"Hay un problema conocido que hace que la autenticación de formularios siempre redirija a los usuarios no autenticados a / Cuenta / Login, ignorando la configuración de autenticación de formularios utilizada en Web.config. La solución alternativa es agregar la siguiente configuración de la aplicación".

<add key="autoFormsAuthentication" value="false" />

ACTUALIZACIÓN 2:

Alexander Prokofyev notó que ASP.NET 3 RTM busca otra configuración. Entonces, necesitas esta línea:

<add key="loginUrl" value="~/LogOn" />


Eliminé lo siguiente de mi web.config

<remove name="FormsAuthentication" />

y luego todo pareció funcionar. Este texto se agregó de forma predeterminada cuando creé mi proyecto.


La tilde (~) significa "la raíz de mi sitio web", por lo que no tiene que seguir usando .. o / para subir y bajar la estructura del sitio web. Sin embargo, desde una perspectiva de IIS, su aplicación web puede tener una capa adicional de estructura de directorios que se refleja cuando solicita LoginUrl programación. No estoy seguro de por qué desea recuperar el LoginUrl, el estado normal de las cosas haría que IIS redireccionara al usuario a LoginUrl automáticamente cada vez que trataran de acceder a una página para la que no están autenticados.


Pon lo siguiente en appSettings:

<add key="loginUrl" value="~/Account/LogOn" />

Puede vaciar loginUrl desde la configuración de autenticación de formulario.


Si tiene acceso a IIS, agregue una nueva aplicación y habilite ASP.NET "pipelining integrado" en la sección del grupo de aplicaciones haciendo doble clic en él.

Si su proveedor de hosting no le concede acceso a IIS, inicie sesión en el panel de control.

  • Vaya a sitios web, debajo de la pestaña de administración: habilite el revestimiento de tuberías integrado ASP.NET.
  • Establezca su aplicación como un directorio virtual (funcionó para mí)