2012-09-01 17 views
19

Tengo una aplicación .NET MVC en funcionamiento, pero cuando accedo con IE10 en Windows 8, el código fuente del navegador muestra que todas las URL generadas dinámicamente, p. Ej. con Url.Action("Index", "Home") están escritos como:IE10 inyecta el token en enlaces .NET MVC

/(F (usb6gVWyFnXevozQyFvVxVdbsN0uM9kZ5wNu9gT9pWBINGuodOdzLKkIQzfhqy3UhnCLyXf78LugXZO2UPYfMbNzSJJawmbqUBL56TjKpXgWpiMdVAjB1T3YcPlGhZePwFd6C9P_f_Y89KiDnWcA9EfR1m0ud3IcBYTW8OwZxOMTd8bxt5hM8mgXVN6OSdoo3IMwRA2))/Inicio/Índice

en lugar de:

/Home/Índice

Si escribimos el enlace con HTML estático:

<a href="/Home/Index">[linktext]</a> 

IE10 redirige a la página de inicio de sesión. El problema es cuando abandono el sitio temporalmente para ir a un sitio asociado que tiene un enlace de regreso al primer sitio. Como falta el código inyectado, la URL de retorno ya no es válida y redirige al inicio de sesión.

Alguien sabe por qué este código se inyecta (marco o asunto IE10?)

Respuesta

22

Ese código es parte de ASP.NET's cookieless session función. Puede disable it en la sección de web.config <configuration><system.web> con:

<sessionState cookieless="false" /> 

O con:

<forms cookieless="UseCookies" /> 

No sé qué está haciendo eso IE10. Probablemente pueda agregar un archivo de navegador en app_browsers con información actualizada de IE10 para decirle que admite cookies. ¿O tal vez tienes las cookies deshabilitadas?

+1

Parece que tiene razón sobre el servidor que interpreta IE10 incorrectamente debido a archivos de definición no actualizados del examinador. Además de su sugerencia, agregué: '' e IE10 ya no inyecta el token de sesión. – Smorko

+0

Sí, las formas sin cookies fueron las que había usado en el pasado pero que no pude pensar en lo más alto de mi cabeza. – bkaid

8

Existe un error en los archivos de definición del navegador que se incluyen con .NET 2.0 y .NET 4, es decir, que contienen definiciones para un cierto rango de versiones de navegador. Pero las versiones para algunos navegadores (como IE 10) ya no están dentro de esos rangos. Por lo tanto, ASP.NET los ve como navegadores desconocidos y se predetermina a una definición de nivel inferior, que tiene ciertos inconvenientes, como que no admite funciones como JavaScript y/o cookies.

Microsoft lanzó revisiones que corrigieron el problema.

(Source)

+1

Gracias Alexander, la actualización de las definiciones del navegador en el servidor es probablemente la mejor manera de resolver esto si está habilitado para hacer actualizaciones del servidor. Sin embargo, ajustar el web.config hizo el trabajo por mí por el momento. – Smorko

+0

Si está configurando una nueva ventana r2 vm de Windows 2008 desde Azure, debe aplicar la actualización de Windows (para obtener estas correcciones). perdido alrededor de 2 horas buscando este consejo hoy. – MikeJ

1

Agregue su web.archivo de configuración a cookieless="UseCookies" de esta manera;

<authentication mode="Forms"> 
    <forms loginUrl="~/YourLoginUrl" timeout="2880" **cookieless="UseCookies"** /> 
</authentication> 

Esta solución se cotiza desde este enlace; https://stackoverflow.com/a/15510453/2057154

Cuestiones relacionadas