Domanda

Ho un sito web che scollegare l'utente dopo un po 'di inattività. Questo viene fatto il seguente codice:

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

Ma tre volte nell'ultimo paio di giorni ho ricevuto la seguente eccezione:

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)

In un primo momento l'errore sembrava ovvio dal momento logout.aspx non è contenuto nella cartella "Persona", ma al livello principale, ma perché non accade ogni volta che vengo disconnesso fuori dalla cartella "persona"? Ho fatto la stessa routine più e più volte, ma l'errore si verifica quasi mai.

Tutte le idee?

È stato utile?

Soluzione

Si può fare in modo di avere sempre il percorso corretto per principale del sito, scrivendo il percorso completo risolto nella pagina come segue (supponendo che il pagina di logout si trova nella cartella root):

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

Se la pagina di logout non si trova nella cartella principale, effettuare le seguenti operazioni:

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

In questo modo il reindirizzamento funziona anche se i percorsi di sviluppo e di produzione sono diversi.

Spero che questo aiuti.

Altri suggerimenti

modificare il codice per il seguente:

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

Per la rimozione del '' dall'URL si sta andando sempre per la radice del sito.

Modifica
Come indicato nei commenti Erikric vuole andare alla radice della cartella virtuale 'NIR310'.

window.location = "/NIR310/logout.aspx?timeout=true";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top