Pregunta

Tengo un sitio web que el usuario ingrese a cabo después de un tiempo de inactividad. Esto se hace mediante el código siguiente:

 window.location = "./logout.aspx?timeout=true";

Sin embargo, tres veces en el último par de días he recibido la siguiente excepción:

System.Web.HttpException

The file '/NIR310/Person/logout.aspx' does not exist.

   at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath)
   at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile)
   at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile)
   at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean noAssert)
   at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp, Boolean noAssert)
   at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
   at System.Web.UI.PageHandlerFactory.System.Web.IHttpHandlerFactory2.GetHandler(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
   at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)
   at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

En un primer momento el error parecía obvio ya logout.aspx no está contenido en la carpeta "Persona", pero a nivel de la raíz, pero ¿por qué no se suceden cada vez que mi sesión de usuario desde la carpeta "persona"? Yo he hecho la misma rutina una y otra vez, pero el error no ocurre casi nunca.

¿Alguna idea?

¿Fue útil?

Solución

Puede asegurarse de que siempre tiene la ruta correcta a raíz de su sitio escribiendo la ruta completa resuelto en la página de la siguiente manera (asumiendo que su página de salida se encuentra en la carpeta raíz):

window.location = '<%= ResolveUrl("~/logout.aspx?timeout=true")%>';

Si la página de cierre de sesión no está en la carpeta raíz, haga lo siguiente:

window.location = '<%= ResolveUrl("~/Pathtoyourpage/logout.aspx?timeout=true")%>';

De esta manera la redirección funcionará incluso si sus caminos de desarrollo y producción son diferentes.

Espero que esto ayude.

Otros consejos

Cambiar su código a la siguiente:

window.location = "/logout.aspx?timeout=true";

Al eliminar la ''. desde la URL que siempre va a la raíz del sitio.

EDIT:
Como se ha dicho en los comentarios Erikric quiere ir a la raíz de la carpeta virtual 'NIR310'.

window.location = "/NIR310/logout.aspx?timeout=true";
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top